ReadonlynameStable identifier used for lookup, signature hashing, and pass-name keying.
When false, the feature is skipped each frame. Toggling triggers a cached-graph invalidation.
Current dynamic-resolution scale (sub-native fraction).
Live-set the render scale. Takes effect next frame (applied in earlyUpdate); the persistent history is re-fit on resize automatically.
Runs once per frame across every feature before any feature's update.
Use for things that must mutate camera/uniform state before downstream
features sample it — e.g. TAA's sub-pixel jitter, which has to land on
the camera before geometry-fill passes read jitteredViewProjectionMatrix.
Plain per-frame uniform updates belong in update, not here.
Release GPU resources.
Temporal upscaler (FSR2-style). Drives
ctx.setRenderScaleso the whole scene renders sub-native, then resolves to display resolution by accumulating a reprojected history with the Catmull-Rom-upsampled current frame. The marquee "modern AA" path: anti-aliasing and a performance win. WithrenderScale: 1it degrades cleanly to a high-quality TAA (supersedes TAAFeature).Must run LAST in the post chain — after bloom / DoF / motion blur, immediately before tonemap — because those passes size their intermediates to the render resolution; the upscaler is what brings the image up to display resolution. Camera jitter is applied in earlyUpdate (sized to the render resolution) so geometry passes rasterize jittered.
Reads
frame.hdr(render-res) +frame.depth(andframe.velocityif a VelocityFeature ran), writes the display-res resolved HDR back toframe.hdr.