OptionaliblOptionaldirectionalWhen omitted the feature reads the first DirectionalLight
on a root GameObject each frame. Pass a renderer-level light here to
override (e.g. for samples that don't use the GameObject lighting system).
OptionalpointRenderer-level point lights to forward to ForwardPass.updateLights.
OptionalspotRenderer-level spot lights to forward to ForwardPass.updateLights.
OptionalareaRepresentative-point area lights (sphere / tube / rect).
OptionalskinnedOptional skinned-mesh draws. The engine doesn't bucket SkinnedMeshes from the scene graph yet, so callers wire them in directly. Items are GPU-skinned in the vertex shader and shaded with the same forward PBR lighting as un-skinned meshes.
OptionaluseWhen true, the diffuse IBL term is read from order-3 spherical-harmonic
coefficients (IblTextures.shBuffer) instead of the irradiance cube — the
IBL_DIFFUSE_SH shader variant. Set at construction (it selects the
pipeline + bind-group layout); default false keeps the irradiance cube.
OptionalareaWhen true, rect area lights are shaded with reference-quality Linearly Transformed Cosines (Heitz et al. 2016) instead of the table-free representative-point approximation — the specular highlight becomes the correctly-shaped reflection of the light quad at any roughness, with a correct diffuse form factor. Sphere/tube area lights are unaffected.
Opt-in (default false): it adds two small vendored fit tables + a sampler to
the lighting bind group and uploads them once. Set at construction (it
selects the pipeline + bind-group layout). Note the LTC rect interprets
intensity as panel radiance (no inverse-square falloff) and honors
AreaLight.twoSided. See TODO/ltc-area-lights.md.
OptionalsampleHardware MSAA sample count (1 / 2 / 4). Default 1 (off). When > 1 the
forward pass renders into a multisampled color+depth target and resolves
color to a single-sample HDR. The pass then owns the whole color lifecycle,
so it cannot load a pre-existing HDR (e.g. a sky feature's output) — combine
MSAA with sky: undefined. frame.depth becomes multisampled and is not
sampleable by depth-based post (DoF / SSR); those should stay disabled.
OptionalskinnedRender ONLY skinnedDrawItems, ignoring frame.opaque/frame.transparent.
Use to overlay forward-lit (e.g. transparent) skinned geometry on top of a
scene already drawn by another path (e.g. the deferred pipeline) — the pass
loads the existing HDR + depth instead of re-rendering the scene's meshes.
IBL texture set for ambient + specular indirect lighting.