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>
7 lines
344 B
WebGPU Shading Language
7 lines
344 B
WebGPU Shading Language
// 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);
|
|
}
|