Canvas
Set the project canvas resolution, background, and colour space.
What it does
Canvas sets a graph's output size, its colour space, and what shows behind everything else. Every graph and every subgraph can carry one Canvas node. Width, Height and Background feed the render pipeline directly, and the colour-space and tone-curve settings decide how the final image looks on screen and in an export.
An image wired into Background Image sits behind the scene instead of the flat colour. Parent Mode decides whether a subgraph's Canvas inherits the parent's settings or sets its own.
When to use it
Setting the output resolution for a graph or subgraph.
A background colour or a background image behind everything else.
Banding in a gradient or a feedback loop: raise Precision.
Wide-gamut or HDR work needing ACEScg, a specific tone curve, or a wider display gamut.
Nested subgraphs, where the inner one either follows the outer canvas or sets its own resolution and background.
| Parameter | Type | Default | What it does |
|---|---|---|---|
bg_image | Raster | — | Background image rendered behind the 3D scene. Connect a Raster (e.g., from Fill in Raster mode, Image, Video). |
width | Number | 1920 | Canvas width in pixels |
height | Number | 1080 | Canvas height in pixels |
background | Color | rgba(0.00, 0.00, 0.00, 0.00) | Background color (used when no background image is connected) |
precision | String | "8-bit" | Internal render precision. 16-bit recommended for gradients and feedback loops. 32-bit for maximum precision (no texture filtering). One of: 8-bit, 16-bit HDR, 32-bit Float. |
color_space | String | "Linear sRGB" | Internal rendering color space. Linear sRGB for standard displays. ACEScg for wide-gamut VFX work (covers P3, Rec.2020). One of: Linear sRGB, ACEScg. |
view_transform | String | "ACES Filmic" | Tone curve applied to the HDR scene. ACES Filmic is the real-time default. AgX (Sobotka) reduces hue rotation in saturated colours. Un-tone-mapped passes scene-linear through unchanged (use for EXR export). One of: ACES Filmic, AgX, ACES Fitted, Standard, Reinhard, Uncharted 2, Un-tone-mapped. |
display_gamut | String | "sRGB" | Target display encoding for the final viewport / export blit. sRGB is the standard desktop / web default. Display P3 for Apple displays. Rec.2100 PQ / HLG are HDR (require an HDR-capable swapchain — viewport stays SDR until that lands). Linear bypasses the OETF for HDR float export. One of: sRGB, Display P3, Rec.709, Rec.2020, Rec.2100 PQ, Rec.2100 HLG, Linear. |
parent_mode | String | "Match Parent" | How this node relates to the parent graph. Match Parent inherits values. Independent uses local values. Link Parent creates a bidirectional connection. One of: Match Parent, Independent, Link Parent. |
Gotchas
Background shows only when nothing is wired into Background Image. The image takes priority over the flat colour.
A graph with no Canvas node still renders, at 1920×1080, transparent, 8-bit, without the visible canvas boundary in the viewport.
Only the first Canvas node in a graph is used. A second one shows an error state and is ignored.
Rec.2100 PQ and Rec.2100 HLG describe an HDR display target, but the viewport previews in SDR until HDR display output is supported. They tag export intent rather than previewing true HDR brightness on screen.
Worked example
Add a Canvas node to your graph. Set Width and Height to your target resolution.
Set Background to a colour, or wire an Image/Video into Background Image to use it as a backdrop instead.
For banding, raise Precision to 16-bit HDR, or 32-bit Float for maximum headroom.
For a subgraph, set Parent Mode to Independent so it takes its own resolution and background instead of following the parent graph.