Utility Nodes
General-purpose utility operations for common tasks like clamping, mixing, and remapping values.
General-purpose utility operations for common tasks like clamping, mixing, and remapping values.
This category contains 24 nodes.
Nodes
Absolute
Makes negative values positive. Useful for mirroring effects or ensuring values stay positive.
Inputs: Any number.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
Outputs: Always positive (or zero).
| Name | Type | Range |
|---|---|---|
| Number | Number | ≥0 |
Average
Midpoint between two numbers.
Inputs: Two numbers.
| Name | Type | Range | Default |
|---|---|---|---|
| A | Number | any | 0 |
| B | Number | any | 0 |
Outputs: The average.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Bipolar
Maps a 0 to 1 signal onto -1 to 1. The inverse of Unipolar, for feeding a 0-1 control into something that expects a signed swing.
Inputs: A value between 0 and 1.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | 0-1 | 0.5 |
Outputs: The same signal remapped so 0 becomes -1, 0.5 becomes 0, and 1 becomes 1.
| Name | Type | Range |
|---|---|---|
| Number | Number | ±1 |
Clamp
Constrains a value to a range. Values below min become min; values above max become max. For the common 0-1 case use Saturate.
Inputs: Value to constrain, and the min/max bounds.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
| Min | Number | any | 0 |
| Max | Number | any | 1 |
Outputs: Value within the range.
| Name | Type | Range |
|---|---|---|
| Number | Number | min-max |
Clamp Vector
Limits each component to a range. Values below min become min, above max become max.
Inputs: Vector and the Min/Max bounds for each axis. Same port names as the scalar Clamp.
| Name | Type | Range | Default |
|---|---|---|---|
| Vector | Vector | vec | [0, 0, 0] |
| Min | Vector | vec | [0, 0, 0] |
| Max | Vector | vec | [1, 1, 1] |
Outputs: Vector with limited components.
| Name | Type | Range |
|---|---|---|
| Vector | Vector | vec |
Fused Multiply Add
Multiplies A by B then adds C in a single step. More precise than doing it separately.
Inputs: Multiplier, multiplicand, and addend.
| Name | Type | Range | Default |
|---|---|---|---|
| A | Number | any | 0 |
| B | Number | any | 0 |
| C | Number | any | 0 |
Outputs: A × B + C.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Fused Multiply Add Vector
Multiply then add in one step for each axis. A × B + C with better precision.
Inputs: Three vectors: multiplied values and offset.
| Name | Type | Range | Default |
|---|---|---|---|
| A | Vector | vec | [0, 0, 0] |
| B | Vector | vec | [0, 0, 0] |
| C | Vector | vec | [0, 0, 0] |
Outputs: Vector result of A × B + C.
| Name | Type | Range |
|---|---|---|
| Vector | Vector | vec |
Inverse Lerp
Asks where a value sits between min and max: min gives 0, max gives 1. The opposite of Lerp. It keeps going past both ends, so use Remap Clamped or Saturate if the result drives brightness.
Inputs: Value and the range to measure it against.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
| Min | Number | any | 0 |
| Max | Number | any | 1 |
Outputs: 0 at min and 1 at max, running below 0 and above 1 outside that range.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Inverse Square Root
One divided by the square root. Useful for normalization calculations.
Inputs: Positive number.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 1 |
Outputs: Inverse square root.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Inverse Square Root Vector
One divided by the square root of each axis. Useful for normalizing vectors efficiently.
Inputs: 3D vector (positive values).
| Name | Type | Range | Default |
|---|---|---|---|
| Vector | Vector | vec | [1, 1, 1] |
Outputs: Vector with inverse square roots.
| Name | Type | Range |
|---|---|---|
| Vector | Vector | vec |
Lerp
Blends between two values. At T=0 outputs A, at T=1 outputs B, in between outputs a mix.
Inputs: A and B are the values to blend. T controls the blend (0 to 1).
| Name | Type | Range | Default |
|---|---|---|---|
| A | Number | any | 0 |
| B | Number | any | 0 |
| T | Number | 0-1 | 0 |
Outputs: The blended value.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Normalize Vector
Keeps direction but sets length to 1. Useful when you only care about direction, not distance.
Inputs: Any position or direction.
| Name | Type | Range | Default |
|---|---|---|---|
| Vector | Vector | vec | [0, 0, 0] |
Outputs: Same direction, length of 1.
| Name | Type | Range |
|---|---|---|
| Vector | Vector | vec |
Remap
Converts a value from one range to another. For example, remap 0-1 to 0-255 or vice versa. The result runs past the output range for inputs outside the input range; use Remap Clamped when it drives brightness.
Inputs: Value and its current range (Input Min/Max), plus the desired range (Output Min/Max).
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
| Input Min | Number | any | 0 |
| Input Max | Number | any | 1 |
| Output Min | Number | any | 0 |
| Output Max | Number | any | 1 |
Outputs: Value scaled to the new range.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Remap Clamped
Converts a value from one range to another and holds it inside the output range. Remap and Inverse Lerp both run past their ends, which silently pushes intensities out of range; use this when the result drives brightness.
Inputs: Value and its current range (Input Min/Max), plus the desired range (Output Min/Max). A zero-width input range yields Output Min.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
| Input Min | Number | any | 0 |
| Input Max | Number | any | 1 |
| Output Min | Number | any | 0 |
| Output Max | Number | any | 1 |
Outputs: Value scaled to the new range, never outside it.
| Name | Type | Range |
|---|---|---|
| Number | Number | outMin-outMax |
Repeat Input
Start of a loop. Pair with Repeat Output to run calculations multiple times. Useful for layering or accumulating effects.
Outputs: Current iteration number (starts at 0). Additional outputs appear when connected to Repeat Output.
| Name | Type | Range |
|---|---|---|
| Iteration | Number | any |
Repeat Output
End of a loop. Set the number of iterations. Values fed here become available at Repeat Input for the next loop.
Inputs: Number of times to repeat.
| Name | Type | Range | Default |
|---|---|---|---|
| Iterations | Number | 0+ | 10 |
Saturate
Limits a value to the 0-1 range. Values below 0 become 0, above 1 become 1. Clamp does the same for an arbitrary range.
Inputs: Any number.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
Outputs: Value between 0 and 1.
| Name | Type | Range |
|---|---|---|
| Number | Number | 0-1 |
Saturate Vector
Limits each component to the 0-1 range. Quick way to prevent overflow.
Inputs: 3D vector.
| Name | Type | Range | Default |
|---|---|---|---|
| Vector | Vector | vec | [0, 0, 0] |
Outputs: Vector with limited components (0-1 each).
| Name | Type | Range |
|---|---|---|
| Vector | Vector | 0-1 |
Sign
Extracts just the direction: -1 for negative, 0 for zero, 1 for positive.
Inputs: Any number.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
Outputs: -1, 0, or 1.
| Name | Type | Range |
|---|---|---|
| Number | Number | any |
Sign Vector
Gets the direction of each component: -1 for negative, 0 for zero, 1 for positive.
Inputs: 3D vector.
| Name | Type | Range | Default |
|---|---|---|---|
| Vector | Vector | vec | [0, 0, 0] |
Outputs: Vector with direction indicators.
| Name | Type | Range |
|---|---|---|
| Vector | Vector | vec |
Smoothstep
Smooth fade between 0 and 1 within a range. Creates soft edges without harsh cutoffs. Essential for blending effects.
Inputs: Min/Max define the transition range. Value is the input to evaluate.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
| Min | Number | any | 0 |
| Max | Number | any | 1 |
Outputs: 0 below min, 1 above max, smooth curve in between.
| Name | Type | Range |
|---|---|---|
| Result | Number | 0-1 |
Square Root
Finds the number that when multiplied by itself equals the input. Input 9 gives 3.
Inputs: Non-negative number.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | any | 0 |
Outputs: Square root (always positive).
| Name | Type | Range |
|---|---|---|
| Number | Number | ≥0 |
Square Root Vector
Takes the square root of each component. Softens large values.
Inputs: 3D vector (all non-negative).
| Name | Type | Range | Default |
|---|---|---|---|
| Vector | Vector | vec | [1, 1, 1] |
Outputs: Vector with square roots.
| Name | Type | Range |
|---|---|---|
| Vector | Vector | vec |
Unipolar
Maps a -1 to 1 signal onto 0 to 1. Use this on anything that swings both ways (Simplex Noise, Sin, Oscillate) before it drives brightness, or the negative half of the swing is clipped to black.
Inputs: A value between -1 and 1.
| Name | Type | Range | Default |
|---|---|---|---|
| Value | Number | ±1 | 0 |
Outputs: The same signal remapped so -1 becomes 0, 0 becomes 0.5, and 1 becomes 1.
| Name | Type | Range |
|---|---|---|
| Number | Number | 0-1 |