RT sun shadows: blocky, flickering shadow edges with FSR on #779

Open
opened 2026-10-15 03:13:22 +00:00 by sky_line · 0 comments
Owner

Owner report (2026-10-15, dev build e1b51ff8cf, RTX 5090, 4K output, RT sun shadows): a lamp post's long sun shadow across a road shows blocky, flickering edges -- the shadow outline is stair-stepped in coarse blocks that change frame to frame. Only with FSR on, at NATIVE quality (no upscaling: FSR used as AA at 1.0x); with FSR off (native TAA) the same shadow is clean. Screencast attached.

Notes / suspects

  • Not a resolution mismatch: at native FSR the render (and RT mask, scale 1) is full resolution, same as FSR off.
  • FSR's jitter sequence vs the RT shadow mask: the mask is jitter-consistent with native TAA's jitter; under FSR the jitter source / sequence / sign may differ (FSR 3 jitter phase count, ffxFsr3GetJitterOffset), so mask texels and the lit pass sample different sub-pixel positions each frame -> edges jump between texels -> blocky flicker. Compare rtMaskJitter() / taa_jitter plumbing under FSR vs TAA.
  • FSR reactive / transparency-composition masks: the shadow mask's reactive output (g_rtmask_react) may mark shadow edges reactive so FSR doesn't accumulate them, leaving raw per-frame edges.
  • FSR's own history rejection on lighting-only changes (shadow edges with no motion vectors) -- the RT denoiser's per-frame variation at edges looks like disocclusion to FSR.
  • Related: #768 (full-res edge refinement for reduced-res masks), #774 (low-sun shimmer at Half resolution).

Repro

Low-ish sun, long thin caster shadow (lamp post) across a flat surface, upscaler FSR at native (1.0x), camera still or slowly moving; switch to TAA / FSR off to compare.

Owner report (2026-10-15, dev build e1b51ff8cf, RTX 5090, 4K output, RT sun shadows): a lamp post's long sun shadow across a road shows **blocky, flickering edges** -- the shadow outline is stair-stepped in coarse blocks that change frame to frame. **Only with FSR on, at NATIVE quality (no upscaling: FSR used as AA at 1.0x)**; with FSR off (native TAA) the same shadow is clean. Screencast attached. ## Notes / suspects - Not a resolution mismatch: at native FSR the render (and RT mask, scale 1) is full resolution, same as FSR off. - FSR's jitter sequence vs the RT shadow mask: the mask is jitter-consistent with native TAA's jitter; under FSR the jitter source / sequence / sign may differ (FSR 3 jitter phase count, `ffxFsr3GetJitterOffset`), so mask texels and the lit pass sample different sub-pixel positions each frame -> edges jump between texels -> blocky flicker. Compare `rtMaskJitter()` / `taa_jitter` plumbing under FSR vs TAA. - FSR reactive / transparency-composition masks: the shadow mask's reactive output (`g_rtmask_react`) may mark shadow edges reactive so FSR doesn't accumulate them, leaving raw per-frame edges. - FSR's own history rejection on lighting-only changes (shadow edges with no motion vectors) -- the RT denoiser's per-frame variation at edges looks like disocclusion to FSR. - Related: #768 (full-res edge refinement for reduced-res masks), #774 (low-sun shimmer at Half resolution). ## Repro Low-ish sun, long thin caster shadow (lamp post) across a flat surface, upscaler FSR at native (1.0x), camera still or slowly moving; switch to TAA / FSR off to compare.
sky_line added this to the Slipstream project 2026-10-15 03:13:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#779
No description provided.