THREE.JS / FOUNDATIONS 223

Make motion linger.

A moving scene becomes a temporal texture experiment: the official AfterImageNode owns a ping-pong history, while a second lane reads PassNode.getPreviousTextureNode() directly.

Initializing Preparing WebGPU

Preparing the temporal postprocessing graph...

backend
-
architecture
-
graph
-
history
-
output
-
target
-
frame ms
-
resources
-
Temporal controlsnode graph

AfterImageNode composites the current scene with a damped previous frame.

Temporal contractWebGPU / TSL
pass(scene, camera)current scene texture
AfterImageNodeinternal comp + old targets
getPreviousTextureNode()previous PassNode frame
updateBeforeType = FRAMEhistory updates per frame
RenderPipeline.outputNodetemporal output branch
needsUpdate = truebranch change recompiles

The current scene and previous frame are separate textures; rebuild disposes both history implementations.

History readoutready
scene pass-
strategy-
previous texture-
afterimage state-
graph ownership-

PassNode owns the scene target; AfterImageNode owns its compositing and old-frame targets.

Derived from the official WebGPU afterimage example, current AfterImageNode, PassNode, and WebGPU postprocessing manual. Use ?forceWebGL=1 to inspect the explicit direct WebGL2 fallback.

THREE.JS FOUNDATIONS LAB