RT sun shadows shimmer at low sun angles with Half resolution #774

Open
opened 2026-10-15 01:41:10 +00:00 by sky_line · 0 comments
Owner

With RT sun shadows at Half resolution (RenderVKRTShadowMaskScale 0.5) and a low sun angle, shadow edges shimmer (owner report, Cloudsdale, 4K output, RTX 5090). Not visible at full resolution.

Likely causes (to confirm)

  • Low sun = long, grazing shadows: a 1-texel change in where a half-res mask texel's ray lands moves the shadow edge by many screen pixels on the receiver; the reduced-resolution grid shifting with camera/TAA jitter makes edges crawl.
  • The depth-aware upsample (clean_shadow_mask_read.glsl) blends 4 mask texels; at grazing receivers the plane test (1.5% tolerance) may switch taps in/out frame to frame.
  • Temporal denoiser history rejection at grazing angles (depth gradients large), so edges re-noise each frame; soft-disc sampling at 1 spp with a low sun = wide penumbra noise.
  • Sun direction drift (day cycle) shortening history (sun_move bits).

Ideas

  • #768 (full-resolution edge refinement) likely fixes most of it by making edges exact.
  • Stabilise the mask grid against TAA/FSR jitter (trace at jitter-free or jitter-aware positions), and per-pixel history clamping tuned for grazing receivers.
  • Check the RT mask diag views (RenderVKRTMaskDiag, RenderVKRTShadowDebug) at a low sun to see whether the raw trace or the filter shimmers.
With RT sun shadows at Half resolution (`RenderVKRTShadowMaskScale` 0.5) and a low sun angle, shadow edges shimmer (owner report, Cloudsdale, 4K output, RTX 5090). Not visible at full resolution. ## Likely causes (to confirm) - Low sun = long, grazing shadows: a 1-texel change in where a half-res mask texel's ray lands moves the shadow edge by many screen pixels on the receiver; the reduced-resolution grid shifting with camera/TAA jitter makes edges crawl. - The depth-aware upsample (`clean_shadow_mask_read.glsl`) blends 4 mask texels; at grazing receivers the plane test (1.5% tolerance) may switch taps in/out frame to frame. - Temporal denoiser history rejection at grazing angles (depth gradients large), so edges re-noise each frame; soft-disc sampling at 1 spp with a low sun = wide penumbra noise. - Sun direction drift (day cycle) shortening history (sun_move bits). ## Ideas - #768 (full-resolution edge refinement) likely fixes most of it by making edges exact. - Stabilise the mask grid against TAA/FSR jitter (trace at jitter-free or jitter-aware positions), and per-pixel history clamping tuned for grazing receivers. - Check the RT mask diag views (`RenderVKRTMaskDiag`, `RenderVKRTShadowDebug`) at a low sun to see whether the raw trace or the filter shimmers.
sky_line added this to the Slipstream project 2026-10-15 01:41:10 +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#774
No description provided.