Builds this frame's Hierarchical-Z (HZB) depth pyramid and dispatches the occlusion visibility
test against it -- see docs/adr/0008-hzb-occlusion-culling-webgpu-only.md. Sits between
DepthPrePassGPU (which just finished writing this frame's opaque depth, the pyramid's seed)
and MainRenderPass. Only constructed at all when enableOcclusionCulling is set --
WebGPURenderer._buildHzbPyramid()/_dispatchHzbTest() are themselves no-ops otherwise (and
for offscreen render targets), so this pass has no logic of its own beyond sequencing the two
calls; all the actual GPU resource management lives on the renderer, same as
ClusterCullPassGPU/_setViewMatrix().
Builds this frame's Hierarchical-Z (HZB) depth pyramid and dispatches the occlusion visibility test against it -- see docs/adr/0008-hzb-occlusion-culling-webgpu-only.md. Sits between
DepthPrePassGPU(which just finished writing this frame's opaque depth, the pyramid's seed) andMainRenderPass. Only constructed at all whenenableOcclusionCullingis set --WebGPURenderer._buildHzbPyramid()/_dispatchHzbTest()are themselves no-ops otherwise (and for offscreen render targets), so this pass has no logic of its own beyond sequencing the two calls; all the actual GPU resource management lives on the renderer, same asClusterCullPassGPU/_setViewMatrix().