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
7
examples/RTMultiShadow/resolve.wgsl
Normal file
7
examples/RTMultiShadow/resolve.wgsl
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
// RTMultiShadow RESOLVE-stage tonemap: Reinhard + gamma 2.2 over the
|
||||
// linear accumulator. Registered as a WebGPURTStage::Resolve shader.
|
||||
fn resolve_main(coord: vec2<u32>, hdr: vec4<f32>) -> vec4<f32> {
|
||||
let mapped = hdr.rgb / (hdr.rgb + vec3<f32>(1.0));
|
||||
let g = pow(mapped, vec3<f32>(1.0 / 2.2));
|
||||
return vec4<f32>(g, 1.0);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue