Ray-traced shadows: fully transparent rigged mesh faces still cast shadows #1471

Open
opened 2026-11-06 00:45:52 +00:00 by TheSlowly · 0 comments
Collaborator

With ray-traced shadows from ordinary lights ("Shadows from all lights", ReSTIR DI with RenderVKProjectorShadows 2), a fully transparent face of a worn rigged mesh still blocks the light. It casts a hard dark patch on the wearer (seen on a coat, cast by hidden parts of a worn item). Shadow maps skip the same faces.

Cause: the ray-tracing scene drops blend faces with tint alpha <= 1/255 (RenderVKRTBlendCull, clean_rt_instances.comp pass A), but rigged faces go through pass B and the CPU rig plan (llcleanrtvk.cpp), where tint is never checked. Every rigged face, including a mesh body's hidden parts (an OpenPony body had 18 such faces), stays in the TLAS. A ray-tracing debug probe confirmed it: the patch's blocker was a rigged, own-avatar blend face with tint alpha 0.

Fix: apply the same tint-alpha cull to rigged faces when the rig plan is built. Re-plan when a face's alpha crosses the cutoff (mesh body HUDs and scripts toggle it), and when the setting changes.

With ray-traced shadows from ordinary lights ("Shadows from all lights", ReSTIR DI with RenderVKProjectorShadows 2), a fully transparent face of a worn **rigged** mesh still blocks the light. It casts a hard dark patch on the wearer (seen on a coat, cast by hidden parts of a worn item). Shadow maps skip the same faces. Cause: the ray-tracing scene drops blend faces with tint alpha <= 1/255 (RenderVKRTBlendCull, `clean_rt_instances.comp` pass A), but rigged faces go through pass B and the CPU rig plan (`llcleanrtvk.cpp`), where tint is never checked. Every rigged face, including a mesh body's hidden parts (an OpenPony body had 18 such faces), stays in the TLAS. A ray-tracing debug probe confirmed it: the patch's blocker was a rigged, own-avatar blend face with tint alpha 0. Fix: apply the same tint-alpha cull to rigged faces when the rig plan is built. Re-plan when a face's alpha crosses the cutoff (mesh body HUDs and scripts toggle it), and when the setting changes.
TheSlowly added this to the Slipstream project 2026-11-06 00:45:52 +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#1471
No description provided.