RT projector shadows: grain in penumbrae (fixture self-occlusion + 1 spp static noise) #104
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/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).Ticket audit 2026-10-07: done and shipped in 1.0.0 Beta 1. Softness default cut, stratified multi-ray, per-frame noise, temporal mask and spatial denoise (
cf07094e4b,135e5793fa,cafcde2086,b3afa53755,131a9652ae). If you still see the problem on the current beta, please reopen or file a new report.