Generator node
Render Output
Exposes the final composited frame — everything the output viewport drew — back into the graph as a normal .image output. It is one frame behind by design, which is exactly what makes feedback loops possible. Reach for it to build trails and echo effects, to send the finished frame to a Virtual Camera Output, or to feed the composite into an image-processing chain.
Outputs
| Port | Type |
|---|---|
| Image | image |
| Width | float |
| Height | float |
Live Preview
How It Works
Render Output has no input ports. Its only job is to hand you the previous frame's finished composite as a texture.
Merely existing in the graph is what turns the tap on: when the node builds its render command it registers itself as a consumer of the shared final-composite texture, which activates the offscreen composite path in the renderer. Removing the node (or deleting it) unregisters that consumer again, so the extra composite pass costs nothing when no one is listening.
Its "renderer" runs no shaders at all. In the pre-render blit hook — before any Canvas composites this frame — it performs a single GPU blit from the final-composite read buffer into the node's own texture, copying the overlapping region (min(source, target) in width and height) when the pixel formats match. Because the source is the previous frame's buffer, it is stable for the whole current frame, and the texture is guaranteed ready before anything downstream reads it. No render pass runs for this node, so nothing clears or overdraws the blitted result.
The one-frame delay is structural, not a limitation. A node that reads "the finished composite" is a consumer of Canvas, while Canvas is a consumer of the generators — reading it in the same frame would be a cycle. The one-frame tap is the standard feedback model in every node-based compositing tool, and it is what lets you route the output back into the input without deadlocking the graph.
Outputs follow the generator contract: Image is the texture in the texture store, and Width / Height report the full viewport in Grafit units — 2 × max(ar, 1) by 2 / min(ar, 1), where ar is the render aspect ratio. That is the same convention Canvas Auto and Replicator use, so a Canvas set to those dimensions covers the visible frame exactly (origin at the viewport center, shorter edge mapping to [-1, 1]).
Note that its category is .generator, not .render: it is a texture producer that lives in the generator store, not a Canvas-layer compositor. So like every other generator, its Image must go through a Canvas node to be drawn — and drawing it back onto the same viewport is precisely how a feedback chain is built.
Parameters in Depth
Render Output has no input ports and nothing to configure. Everything about its behavior is fixed:
| Behavior | Detail |
|---|---|
| Source | The final composited frame of the previous render pass |
| Latency | Exactly one frame, by design |
| Resolution | The render viewport's pixel size (the copy is clipped to the smaller of source/target) |
| Cost | One GPU blit per frame, plus the offscreen composite pass that the node's presence enables |
| Activation | Automatic — placing the node in the graph registers it as a composite consumer |
| Image | The copied composite texture |
| Width | 2 × max(aspectRatio, 1) Grafit units |
| Height | 2 / min(aspectRatio, 1) Grafit units |
Use Cases
- Video feedback / trails: Render Output → Canvas with Opacity around 0.9 and a small Scale or Rotation offset, placed on a lower layer — each frame re-composites a slightly transformed copy of the last, producing infinite-tunnel and motion-trail effects
- Echo decay: Render Output → an image adjustment (brightness/opacity reduction) → Canvas underneath your live layers, for a soft ghosting tail behind fast-moving generators
- Feed a virtual camera: Render Output → Virtual Camera Output, so conferencing and streaming apps receive the finished Grafit composite as a webcam source
- Post-process the whole scene: Render Output → an image transform/composite chain (blur, color grade, displacement) → Canvas on the top layer, treating the entire graph's output as a single image
- Kaleidoscope of the whole frame: Render Output → Canvas duplicated with mirrored Scale X / Scale Y on several layers, folding the composite back onto itself
- Reactive feedback: Audio FFT → Remap → the Canvas Rotation or Scale that displays the Render Output, so the feedback tunnel breathes with the music
Tips
- Feedback loops are self-amplifying: keep the Canvas Opacity displaying the Render Output below 1.0 (and/or scale it slightly), or the image will saturate to white within a few frames
- The one-frame delay is intentional and unavoidable — never expect the current frame's changes to appear in the same frame's Render Output
- Because there is one shared composite tap, adding several Render Output nodes is cheap; removing all of them turns the extra composite pass back off
- The blit only happens when the source and destination pixel formats match, so the tap is inherently format-safe — it silently skips rather than producing garbage
- Width/Height match the full viewport, which makes it a drop-in partner for a Canvas whose Width/Height are wired from those outputs — the composite is then reproduced at exactly 1:1
- Like every generator, it needs a Canvas node to become visible again; layers and blend modes belong to Canvas, not here
Open Render Output in the interactive catalog →
Render Output is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.