Skip to main content
Documentation
Node Editor

Spatial Nodes

Distance calculations, coordinate transformations, and spatial operations for 3D effect positioning.

Distance calculations, coordinate transformations, and spatial operations for 3D effect positioning.

This category contains 10 nodes.

Nodes

Exponential Falloff

Brightness fades quickly at first then slowly. Good for natural-looking glow and light decay.

Inputs: Distance and decay rate.

NameTypeRangeDefault
DistanceNumber≥00
Decay RateNumberany1

Outputs: Decay value (1 at center, approaching 0 far away).

NameTypeRange
NumberNumberany

Is Within

Checks if a value falls between a minimum and maximum (inclusive).

Inputs: Value to test, minimum, and maximum.

NameTypeRangeDefault
ValueNumberany0
MinNumberany0
MaxNumberany1

Outputs: True if value is within the range.

NameTypeRange
ResultBooleanbool

Is Within 3D

Checks if a 3D position falls inside a rectangular box region.

Inputs: Position and box bounds for each axis.

NameTypeRangeDefault
PositionVectorvec[0, 0, 0]
Min XNumberany0
Max XNumberany1
Min YNumberany0
Max YNumberany1
Min ZNumberany0
Max ZNumberany1

Outputs: True if inside the box.

NameTypeRange
ResultBooleanbool

Linear Falloff

Brightness decreases steadily with distance. Simple and predictable fade effect.

Inputs: Distance and maximum range.

NameTypeRangeDefault
DistanceNumber≥00
Max DistanceNumberany1

Outputs: Decay value (1 at center, 0 at max distance).

NameTypeRange
NumberNumberany

Phase Offset

Turns a fixture's position into a per-fixture phase, so a wave sweeps across the rig instead of pulsing everywhere at once. Feed the phase into Oscillate or a wave node. Direction sets which way the chase travels, Spread how many cycles fit across the rig.

Inputs: Position (usually Pixel Position), the travel Direction (normalized internally; a zero-length direction yields a flat phase of just Offset), Spread as cycles across one unit of distance, and a constant Offset.

NameTypeRangeDefault
PositionVectorvec[0, 0, 0]
DirectionVectorvec[1, 0, 0]
SpreadNumberany1
OffsetNumberturns0

Outputs: Phase in turns: 1.0 is one full cycle. Feed it straight into Oscillate.

NameTypeRange
PhaseNumberturns

Polar Position

Splits a position into radius, angle, and height around an axis. The building block for rings, spirals, pinwheels, and anything that sweeps around a center. Polar SDF does the same maths but packs the result into one vector for the SDF chain.

Inputs: Position (usually Pixel Position), the Center to measure from, and the Axis to rotate around.

NameTypeRangeDefault
PositionVectorvec[0, 0, 0]
CenterVectorvec[0.5, 0.5, 0.5]
AxisVectorvec[0, 1, 0]

Outputs: Radius is distance from the axis. Angle is in TURNS (0-1 for a full circle), matching Oscillate. Height is the signed distance along the axis, measured from Center: dot(position - center, normalize(axis)). With the default Axis of [0, 1, 0] that is the Y offset, so an effect that wants a Z offset must pass [0, 0, 1] and read Height as z - center.z.

NameTypeRange
RadiusNumber≥0
AngleNumberturns 0-1
HeightNumberany

Radial Phase

Turns distance from a center point into a per-fixture phase, so a wave ripples outward instead of sweeping in a straight line. Feed the phase into Oscillate or a wave node.

Inputs: Position (usually Pixel Position), the Center to ripple from, Spread as cycles across one unit of distance, and a constant Offset.

NameTypeRangeDefault
PositionVectorvec[0, 0, 0]
CenterVectorvec[0.5, 0.5, 0.5]
SpreadNumberany1
OffsetNumberturns0

Outputs: Phase in turns: 1.0 is one full cycle. Feed it straight into Oscillate.

NameTypeRange
PhaseNumberturns

Smooth Falloff

Full brightness at the center fading smoothly to nothing at Radius. Smoothstep cannot do this on its own because swapping its edges does not invert it, so this replaces the usual one-minus-smoothstep pair.

Inputs: Distance from the center, the Radius where it reaches zero, and Softness (0 = hard edge at the radius, 1 = fades the whole way in).

NameTypeRangeDefault
DistanceNumber≥00
RadiusNumber≥01
SoftnessNumber0-11

Outputs: 1 at distance 0, 0 at or beyond the radius, smooth in between. At the default Softness of 1 this is exactly 1 - smoothstep(0, radius, distance); at 0 it is a hard edge at the radius.

NameTypeRange
NumberNumber0-1

Smooth Is Within

Like Is Within but with soft edges. Fades in and out at the boundaries instead of hard cutoffs.

Inputs: Value, range, and edge softness.

NameTypeRangeDefault
ValueNumberany0
MinNumberany0
MaxNumberany1
ToleranceNumberany0.01

Outputs: Smooth value from 0 to 1.

NameTypeRange
ResultNumberany

Smooth Is Within 3D

Like Is Within 3D but with soft edges. Fades in and out at box boundaries.

Inputs: Position, box bounds, and edge softness.

NameTypeRangeDefault
PositionVectorvec[0, 0, 0]
Min XNumberany0
Max XNumberany1
Min YNumberany0
Max YNumberany1
Min ZNumberany0
Max ZNumberany1
ToleranceNumberany0.01

Outputs: Smooth value from 0 to 1.

NameTypeRange
ResultNumberany