A 3x3x3 grid of AABB-geometry spheres rendered through an analytic ray-sphere intersection shader, with an any-hit spherical-checkerboard cut-out so the background shows through. Exercises both features end to end on the WebGPU wavefront tracer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.1 KiB
1.1 KiB
RTVolume
WebGPU software ray tracing of procedural (AABB) geometry with an any-hit cut-out — the two features added for issue #13.
A 3×3×3 grid of unit boxes is registered as an AABB BLAS
(Mesh::BuildProcedural, the WebGPU analog of VK_GEOMETRY_TYPE_AABBS_KHR).
The hit group is a RTShaderGroupType::ProceduralHitGroup carrying:
intersection.wgsl— analytic ray–sphere test that turns each box into a radius-1 sphere (runs in TRACE, once per box the ray enters);anyhit.wgsl— returnsRT_ANYHIT_IGNOREfor half the cells of a spherical checkerboard, so the ray passes through and the background / spheres behind show through (the visible proof any-hit runs);closesthit.wgsl— normal-based Lambert shading, tinted per instance.
The geometry is registered non-opaque and the instances clear their
force-opaque flag, which is what lets the any-hit shader run. Flip the
instance flag to kRTGeometryInstanceForceOpaque (or build the mesh with
opaque = true) to skip any-hit and see solid spheres.
WebGPU/DOM only:
crafter-build --target=wasm32-wasip1 -r