Canvas
A framing node that re-places inputs whose resolutions and aspect ratios are all different onto a canvas at the output resolution. The aspect handling decides the basic way it is fitted, and position, scale and 3-axis rotation are layered on top of that. The implementation is a single UV transform pass (inverse homography), so it uses neither a camera nor a layer.
Aspect policy (dropdown)
- Stretch — stretches to fill the output (the aspect ratio breaks)
- Fit (default) — fits the whole thing in. It matches the long side, so margins appear on the short side
- Fill — covers the whole thing. It matches the short side, so the long side overflows and is cropped
Parameters
- Position X / Position Y — an offset in the normalized coordinates of the output. Default 0
- Scale X / Scale Y — multiplied further onto the factor determined by the aspect handling. Default 1. Negative values flip it
- Rotation X / Rotation Y / Rotation Z — degrees. Z is in-plane rotation, while X and Y are tilts in the depth direction and a perspective projection is applied. Default 0
The output resolution follows the global (master) resolution. It is not the resolution of the input. Changing the resolution of Master Output also recreates the output RT.
Pixels whose transformed UV falls outside 0-1 become transparent (black + alpha 0). The same applies when it degenerates near edge-on.
When Scale is nearly zero it is guarded at ±1e-4 to avoid division by zero (the sign is preserved, so the flip from a negative scale still works).
Even when the input is not connected, the output RT itself stays alive (initialized to black).
The output supports HDR.
Video
Input ports
| Port ID | Type |
|---|---|
Render Texture | RenderTexture |
Position X | float |
Position Y | float |
Scale X | float |
Scale Y | float |
Rotation X | float |
Rotation Y | float |
Rotation Z | float |
Output ports
| Port ID | Type |
|---|---|
Render Texture | RenderTexture |
Scriptable members
| Path | Type |
|---|---|
posXInput | float |
posYInput | float |
scaleXInput | float |
scaleYInput | float |
rotXInput | float |
rotYInput | float |
rotZInput | float |
Synapse Apps (scripting)
await synapse.modules.create({ type: "Canvas" })