Optional postprocessing pipeline for ambient occlusion. Default-OFF: the viewer only constructs
this when render.ambientOcclusion is enabled, and otherwise renders with a plain
renderer.render so the cheap path stays cheap (the chosen tradeoff — see cad-viewer-plan.md).
Pipeline: RenderPass → GTAOPass → OutputPass. GTAO (ground-truth AO) is the modern replacement for
SSAO/SAO — better contact shadows in crevices, the "engineered" depth cue. screenSpaceRadius is
on so the AO radius is in screen space, which keeps it scale-robust across the viewer's mm→m
scenes without per-scene tuning. OutputPass applies tone mapping + color space (taking over the
roles the renderer did directly in the non-composer path).
Camera swaps: the active camera can flip perspective↔ortho. Rather than rebuild the composer, we
retarget the passes' camera each render via setCamera.
Optional postprocessing pipeline for ambient occlusion. Default-OFF: the viewer only constructs this when
render.ambientOcclusionis enabled, and otherwise renders with a plainrenderer.renderso the cheap path stays cheap (the chosen tradeoff — see cad-viewer-plan.md).Pipeline: RenderPass → GTAOPass → OutputPass. GTAO (ground-truth AO) is the modern replacement for SSAO/SAO — better contact shadows in crevices, the "engineered" depth cue.
screenSpaceRadiusis on so the AO radius is in screen space, which keeps it scale-robust across the viewer's mm→m scenes without per-scene tuning. OutputPass applies tone mapping + color space (taking over the roles the renderer did directly in the non-composer path).Camera swaps: the active camera can flip perspective↔ortho. Rather than rebuild the composer, we retarget the passes'
cameraeach render via setCamera.