Skip to main content
Documentation
Node Editor

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.

NameTypeRangeDefault
ValueNumberany0

Outputs: Always positive (or zero).

NameTypeRange
NumberNumber≥0

Average

Midpoint between two numbers.

Inputs: Two numbers.

NameTypeRangeDefault
ANumberany0
BNumberany0

Outputs: The average.

NameTypeRange
NumberNumberany

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.

NameTypeRangeDefault
ValueNumber0-10.5

Outputs: The same signal remapped so 0 becomes -1, 0.5 becomes 0, and 1 becomes 1.

NameTypeRange
NumberNumber±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.

NameTypeRangeDefault
ValueNumberany0
MinNumberany0
MaxNumberany1

Outputs: Value within the range.

NameTypeRange
NumberNumbermin-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.

NameTypeRangeDefault
VectorVectorvec[0, 0, 0]
MinVectorvec[0, 0, 0]
MaxVectorvec[1, 1, 1]

Outputs: Vector with limited components.

NameTypeRange
VectorVectorvec

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.

NameTypeRangeDefault
ANumberany0
BNumberany0
CNumberany0

Outputs: A × B + C.

NameTypeRange
NumberNumberany

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.

NameTypeRangeDefault
AVectorvec[0, 0, 0]
BVectorvec[0, 0, 0]
CVectorvec[0, 0, 0]

Outputs: Vector result of A × B + C.

NameTypeRange
VectorVectorvec

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.

NameTypeRangeDefault
ValueNumberany0
MinNumberany0
MaxNumberany1

Outputs: 0 at min and 1 at max, running below 0 and above 1 outside that range.

NameTypeRange
NumberNumberany

Inverse Square Root

One divided by the square root. Useful for normalization calculations.

Inputs: Positive number.

NameTypeRangeDefault
ValueNumberany1

Outputs: Inverse square root.

NameTypeRange
NumberNumberany

Inverse Square Root Vector

One divided by the square root of each axis. Useful for normalizing vectors efficiently.

Inputs: 3D vector (positive values).

NameTypeRangeDefault
VectorVectorvec[1, 1, 1]

Outputs: Vector with inverse square roots.

NameTypeRange
VectorVectorvec

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).

NameTypeRangeDefault
ANumberany0
BNumberany0
TNumber0-10

Outputs: The blended value.

NameTypeRange
NumberNumberany

Normalize Vector

Keeps direction but sets length to 1. Useful when you only care about direction, not distance.

Inputs: Any position or direction.

NameTypeRangeDefault
VectorVectorvec[0, 0, 0]

Outputs: Same direction, length of 1.

NameTypeRange
VectorVectorvec

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).

NameTypeRangeDefault
ValueNumberany0
Input MinNumberany0
Input MaxNumberany1
Output MinNumberany0
Output MaxNumberany1

Outputs: Value scaled to the new range.

NameTypeRange
NumberNumberany

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.

NameTypeRangeDefault
ValueNumberany0
Input MinNumberany0
Input MaxNumberany1
Output MinNumberany0
Output MaxNumberany1

Outputs: Value scaled to the new range, never outside it.

NameTypeRange
NumberNumberoutMin-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.

NameTypeRange
IterationNumberany

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.

NameTypeRangeDefault
IterationsNumber0+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.

NameTypeRangeDefault
ValueNumberany0

Outputs: Value between 0 and 1.

NameTypeRange
NumberNumber0-1

Saturate Vector

Limits each component to the 0-1 range. Quick way to prevent overflow.

Inputs: 3D vector.

NameTypeRangeDefault
VectorVectorvec[0, 0, 0]

Outputs: Vector with limited components (0-1 each).

NameTypeRange
VectorVector0-1

Sign

Extracts just the direction: -1 for negative, 0 for zero, 1 for positive.

Inputs: Any number.

NameTypeRangeDefault
ValueNumberany0

Outputs: -1, 0, or 1.

NameTypeRange
NumberNumberany

Sign Vector

Gets the direction of each component: -1 for negative, 0 for zero, 1 for positive.

Inputs: 3D vector.

NameTypeRangeDefault
VectorVectorvec[0, 0, 0]

Outputs: Vector with direction indicators.

NameTypeRange
VectorVectorvec

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.

NameTypeRangeDefault
ValueNumberany0
MinNumberany0
MaxNumberany1

Outputs: 0 below min, 1 above max, smooth curve in between.

NameTypeRange
ResultNumber0-1

Square Root

Finds the number that when multiplied by itself equals the input. Input 9 gives 3.

Inputs: Non-negative number.

NameTypeRangeDefault
ValueNumberany0

Outputs: Square root (always positive).

NameTypeRange
NumberNumber≥0

Square Root Vector

Takes the square root of each component. Softens large values.

Inputs: 3D vector (all non-negative).

NameTypeRangeDefault
VectorVectorvec[1, 1, 1]

Outputs: Vector with square roots.

NameTypeRange
VectorVectorvec

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.

NameTypeRangeDefault
ValueNumber±10

Outputs: The same signal remapped so -1 becomes 0, 0 becomes 0.5, and 1 becomes 1.

NameTypeRange
NumberNumber0-1