Skip to content

rendering: TAA + temporal history buffer #141

Description

@shadow-kernel

Context

Verified: the engine has NO anti-aliasing outside DLSS — no MSAA/FXAA/TAA/SMAA, SampleDesc.Count=1 in all PSOs (rendering gap analysis). Motion vectors already exist as an RG16F fullscreen pass (Engine/Graphics/DX12/DX12MotionVectorPipeline.{h,cpp}, Engine/Shaders/motionvector.hlsl) but are consumed only by DLSS Frame Generation; there is no jitter, no history buffer, no temporal reuse for custom algorithms. Non-RTX users currently get raw aliased pixels — unacceptable for a moody, low-light horror presentation where crawling edges break immersion.

Goal

Implement TAA: sub-pixel camera jitter (Halton sequence), a persistent history color buffer, and a resolve pass that reprojects history via the existing motion vectors with neighborhood clamping — establishing the temporal history infrastructure that SSR, AO and other temporal effects will reuse. DLSS remains the preferred path on RTX hardware.

Acceptance Criteria

  • Projection-matrix jitter applied per frame, correctly compensated in the motion-vector pass
  • History RT persisted across frames through the render graph; reprojection resolve with YCoCg neighborhood clamp to limit ghosting
  • TAA automatically disabled when DLSS-SR is active (DLSS includes temporal accumulation); mutual-exclusion handled in settings
  • Works correctly with render-scale (history at scaled res, before DX12UpscalePipeline composite)
  • Disocclusion handling: history rejected on depth/velocity mismatch (no smearing on camera cuts or scene switches — hook on_scene_switch())
  • Off/on toggle exposed in game options; visual QA via F12 back-buffer captures

Technical Notes

Camera-only motion vectors will ghost fast-moving skinned meshes — the per-object motion-vector issue fixes that; land this first with clamp-based mitigation.

Dependencies

  • perf: render graph / frame graph architecture

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1-highHohe Priorität – als Nächstes einplanenarea:renderingRenderer, Lichter, Schatten, Post-FX, Shadersize:L~1 Wochetype:featureNeues Engine-/Editor-Feature

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions