AdvancedWhether this pass runs
Flipping it rebuilds the view's render graph on the next render, which suits a settings toggle but not a change every frame; animate an effect's own properties instead. It can also recompile the view's materials; View3D#passes says when.
ReadonlyoutputThe output this pass copies
Readonlyrequired[output], so the view writes it while the pass is enabled
Readonlystage'afterTransparent', once the whole scene has drawn
ReadonlytextureThe copy, rewritten every frame the view renders and destroyed with the pass
It has the output's format, so float values such as velocity come out unclamped. Its size is
the view's and its resolution the scene's (View3D#resolution), so it matches the scene
texel for texel. The pass resizes it as the view renders, after pixi has laid out the frame's
sprites, so a sprite showing it draws at the old size on the first frame and on a frame the
view resizes. Code that reads it after render() sees the new size.
Advanced
Adds the copy to the frame's render graph
The graph being built
The renderer for the copy
Destroys ExtractPass#texture
Copies a scene output out of the frame, into a texture the app keeps
A scene output lasts only for its frame. This pass makes the view write the output and copies it into ExtractPass#texture once the scene has drawn. Show that texture with a sprite, or hand it to code outside the engine.
It costs one fullscreen copy a frame. An effect that reads an output in the same frame, such as an upscaler or ambient occlusion, should read it in its own pass with RenderGraph#getSceneOutput instead. One texture serves one view, so give each view its own pass.
Example