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 textureAfterImageNodeinternal comp + old targetsgetPreviousTextureNode()previous PassNode frameupdateBeforeType = FRAMEhistory updates per frameRenderPipeline.outputNodetemporal output branchneedsUpdate = truebranch change recompilesThe 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.
Temporal afterimage initialization issue
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