RT projector shadows: grain in penumbrae (fixture self-occlusion + 1 spp static noise) #104
Labels
No labels
amd
avatars
bug
builder
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
rendering
rt
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
backspace119/Slipstream#104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom: with
RenderVKProjectorShadows=2(ray traced), surfaces near a projector show a fine diagonal hatch/grain. Example: a tree trunk about 1.5 m from a projector inside a small fixture. With shadow maps, or withRenderVKRTShadowSoftness=0, the same area is a clean solid shadow.Cause (confirmed in-world):
RenderVKRTShadowSoftness(default 0.1 m) at the projector apex. SL projectors are point lights in fixtures built around a point: here the fixture wall right next to the light occludes part of that disc, so every receiver lands in a penumbra caused by the fixture itself. The near-plane cut-off (params.y) stops the ray at the apex plane, but jittered targets still cross the fixture's side walls.projShadowRay(clean_draw_common.glsl) jitters the target with interleaved gradient noise fromgl_FragCoord(fixed pattern, never changes per frame) and has no spatial or temporal filtering, so any penumbra shows the IGN diagonal pattern.Fix plan:
min(softness, k * near_distance)(the near plane approximates the fixture's inner size), and/or cut the default (0.02–0.03 m). Keep the setting for users who want wider penumbrae.Workaround now:
RenderVKRTShadowSoftness = 0(hard ray-traced shadows, no grain).