Instancing
GPU instancing for rendering many copies efficiently. Perfect for particle systems, crowds, and repetitive patterns.
Apply Rotation
Compose rotation onto position or transform. Euler angles (radians).
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| input | 3D Vector / Transform Matrix | zero | Position or transform to rotate |
| rotation | Number / 3D Vector | (0.00, 0.00, 0.00) | Euler angles in radians — or single float for Z-only rotation |
Outputs:
| Name | Type | Description |
|---|---|---|
| transform | Transform Matrix | Input with rotation composed in local space |

Related: Apply Scale, Apply Translation, Get Rotation, Get Scale, Get Translation
Apply Scale
Compose scale onto position or transform. Uniform or per-axis.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| input | 3D Vector / Transform Matrix | zero | Position or transform to scale |
| scale | RGBA Color / Number / 3D Vector / 4D Vector | (1.00, 1.00, 1.00) | Scale factor per axis — or single float for uniform scale |
Outputs:
| Name | Type | Description |
|---|---|---|
| transform | Transform Matrix | Input with scale composed in local space |

Related: Apply Rotation, Apply Translation, Get Rotation, Get Scale, Get Translation
Apply Translation
Compose translation onto position or transform. Adds offset.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| input | 3D Vector / Transform Matrix | zero | Position or transform to offset |
| offset | 3D Vector | (0.00, 0.00, 0.00) | World-space translation to add |
Outputs:
| Name | Type | Description |
|---|---|---|
| transform | Transform Matrix | Input with translation composed in world space |

Related: Apply Rotation, Apply Scale, Get Rotation, Get Scale, Get Translation
Get Rotation
Extract rotation (Euler angles in radians) from a transform matrix.
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| transform | Transform Matrix | identity | Transform matrix to decompose |
Outputs:
| Name | Type | Description |
|---|---|---|
| rotation | 3D Vector | Euler angles in radians (XYZ) — subject to gimbal lock near ±90° pitch |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Scale, Get Translation
Get Scale
Extract scale (float3) from a transform matrix.
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| transform | Transform Matrix | identity | Transform matrix to decompose |
Outputs:
| Name | Type | Description |
|---|---|---|
| scale | 3D Vector | XYZ scale extracted from basis vector lengths |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Translation
Get Translation
Extract position (float3) from a transform matrix.
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| transform | Transform Matrix | identity | Transform matrix to decompose |
Outputs:
| Name | Type | Description |
|---|---|---|
| position | 3D Vector | XYZ position extracted from column 3 of the matrix |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Grid 2D
Generate 2D grid of instance positions for GPU instancing.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| width | Number | 4.00 | Number of columns in the grid |
| height | Number | 4.00 | Number of rows in the grid |
| spacing | 2D Vector | (1.00, 1.00) | Per-axis spacing (X, Y) |
Outputs:
| Name | Type | Description |
|---|---|---|
| instances | 3D Vector | Per-instance position centered on origin |

Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Grid 3D
Generate 3D grid of instance positions for GPU instancing.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| width | Number | 3.00 | Number of cells along X |
| height | Number | 3.00 | Number of cells along Y |
| depth | Number | 3.00 | Number of cells along Z |
| spacing | 3D Vector | (1.00, 1.00, 1.00) | Per-axis spacing (X, Y, Z) |
Outputs:
| Name | Type | Description |
|---|---|---|
| instances | 3D Vector | Per-instance position centered on origin |

Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Instance Count
Total number of instances being rendered. Pair with Instance Index.
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
No inputs
Outputs:
| Name | Type | Description |
|---|---|---|
| count | Number | Total number of instances being rendered |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Instance Index
Current instance index (0 to N-1). Use for per-instance variation.
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
No inputs
Outputs:
| Name | Type | Description |
|---|---|---|
| index | Number | Current instance index (0 to N-1) |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Instance Index Normalized
Instance index normalized to 0.0-1.0 range. Useful for gradients.
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
No inputs
Outputs:
| Name | Type | Description |
|---|---|---|
| normalized | Number | Instance index mapped to 0.0–1.0 range |

Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Make Rotation
Create a rotation transform from Euler angles (radians, ZYX order).
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| rotation | 3D Vector | (0.00, 0.00, 0.00) | Euler angles in radians (XYZ) — applied in ZYX order |
Outputs:
| Name | Type | Description |
|---|---|---|
| transform | Transform Matrix | Pure rotation matrix from the given angles |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Make Scale
Create a scale transform from a scale vector (float3).
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| scale | 3D Vector | (1.00, 1.00, 1.00) | XYZ scale factors |
Outputs:
| Name | Type | Description |
|---|---|---|
| transform | Transform Matrix | Diagonal matrix with scale on the main axis |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Make Translation
Create a translation transform from a position (float3).
This is a surface shader node - it can be connected to rendering nodes.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| position | 3D Vector | (0.00, 0.00, 0.00) | XYZ position to embed in a transform matrix |
Outputs:
| Name | Type | Description |
|---|---|---|
| transform | Transform Matrix | Identity matrix with position in column 3 |
Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale
Texture To Points
Sample texture RGB as XYZ position for instance builder.
Inputs:
| Name | Type | Default | Description |
|---|---|---|---|
| texture | Visual Output | - | Source texture — RGB values become XYZ positions |
| resolution | 2D Vector | (32.00, 32.00) | Sampling grid dimensions — more points = more instances |
| offset | 2D Vector | (0.00, 0.00) | UV offset for the sampling grid |
Outputs:
| Name | Type | Description |
|---|---|---|
| position | 3D Vector | RGB color at each grid point interpreted as XYZ position |

Related: Apply Rotation, Apply Scale, Apply Translation, Get Rotation, Get Scale