Optionalopts: DeferredLightingFeatureOptionsReadonlynameStable identifier used for lookup, signature hashing, and pass-name keying.
When false, the feature is skipped each frame. Toggling triggers a cached-graph invalidation.
The currently-active lighting pass (SH or cube variant).
Diffuse IBL source. true → SH coefficients; false → irradiance cube.
Settable at runtime; the matching pass variant is built lazily and cached.
Call engine.invalidate() after changing it so the cached graph rebuilds.
Perceptual-roughness floor (~0.045). Mutable at runtime.
Per-lobe screen-space AO (multi-bounce GTAO + specular occlusion). Mutable
at runtime; false = legacy flat * ao. Default true.
Aerial-perspective fog on/off. Mutable at runtime. Default false (opt-in).
Screen-space contact shadows for the sun (null = off). Mutable at runtime; takes effect on the next frame.
Directional light cookie / gobo (null = off). Mutable at runtime — mutate
cookie.offset to scroll it (drifting clouds).
Directional shadow filtering — 'pcss' (default) or 'vsm' (EVSM2).
Mutable at runtime; call engine.invalidate() so the graph rebuilds.
EVSM2 moment-map blur radius in texels. Mutable at runtime.
EVSM2 light-bleed reduction [0,1). Mutable at runtime.
G-buffer channel visualization (0 = off / normal lighting). See the
debugMode switch in deferred_lighting.wgsl for the channel mapping.
Deferred lighting. Reads
frame.gbuffer,frame.shadowMap,frame.ao,frame.hdr(clear/load behavior matches the legacy DeferredLightingPass deps), and writes the final HDR result intoframe.hdr. Exposes the persistent camera/light uniform handles onframe.lightingCameraBuffer/frame.lightingLightBufferfor downstream features (composite, godrays).