test(webgpu-rt): RTMultiShadow example exercising N shadow rays/pixel/bounce (#30)
Five pillars, four colored point lights; closest-hit emits one shadow ray per light from the same invocation (raysPerPixel = 4, maxDepth = 2), so up to four rays per pixel rtAccumulate in a single SHADE pass — the contention case #30 exists for. Each pillar casts four separable colored shadows; an accumulator race or capacity drop shows as flickering dark noise or a missing shadow color. Two frames a second apart diff at 2 px / 1.85 M (last-ulp CAS ordering), confirming no lost updates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
27d7e84cb3
commit
f7fc441253
7 changed files with 406 additions and 0 deletions
|
|
@ -106,3 +106,15 @@ barrier WebGPU only provides between submits (or between passes), never
|
|||
within a single compute pass. WebGPU/DOM only; the same chain is wireable
|
||||
on Vulkan today via an offscreen HDR heap image + a composite `RenderPass`
|
||||
(the present path records passes generically and barriers between them).
|
||||
|
||||
### [RTMultiShadow](RTMultiShadow/)
|
||||
Multi-light shadowing through the wavefront RT pipeline (issue #30). Five
|
||||
pillars on a checkered ground, four colored point lights; the closest-hit
|
||||
emits one shadow ray **per light** from the same invocation, so up to four
|
||||
rays per pixel resolve in a single SHADE pass. Exercises both halves of
|
||||
the >1-ray-per-pixel-per-bounce widening: the atomic `rtAccumulate`
|
||||
(per-channel f32 CAS — concurrent same-pixel adds don't race) and
|
||||
`RTPass::raysPerPixel` (scales the ray/hit/payload buffers so the
|
||||
per-light emits aren't capacity-dropped). Any regression shows up as
|
||||
flickering dark noise or a missing shadow color in the overlap regions.
|
||||
WebGPU/DOM only.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue