Data types
The seven value types that flow between node sockets, and the strict rule that governs which sockets connect.
Every wire in a node graph carries a value of one type, and Spectralite tracks seven of them. The type decides what a socket accepts, and a wire connects two sockets only when both carry the same type.
The editor tints each socket and each wire by its data type, so you can see which sockets belong together before you drag. The colors stay consistent within a session, but the exact hue follows the active theme. Read the types below by name.
The seven types
Number
A single value, stored as a 32-bit float. Most values in a graph are Numbers, including brightness, animation progress, an oscillator's output, a distance, and an angle. Many effects keep Numbers in the 0 to 1 range so they blend predictably, but the type itself holds any real number.
Color
The color a fixture emits. A Color carries one level per emitter role, twenty in all, and every fixture drives the roles it has. When you build or split a color with the Color category nodes, you work with six of them: red, green, blue, white, amber, and UV. Combine Color builds a color from those six with every other role at zero, and Split Color reads those six and ignores the rest.
You set the other fourteen roles (lime, the extra whites, violet, and so on) on a color's Channels tab. A fixture that exposes only red, green, and blue ignores the roles it lacks. You author a color once, and Spectralite renders it onto each fixture's real emitters. See Color for the model.
Only the Output node accepts a Color as its final input.
Boolean
A true or false value, stored as 0 or 1. Use it for conditions, toggles, and gates. Comparison nodes produce Booleans. A Boolean does not connect to a Number socket on its own. When you need it as a numeric 0 or 1, convert it with Boolean to Number.
Vector
A 3D vector, always three components: x, y, z. There is no 2D or 4D vector type. Fixture positions arrive as Vectors from the Pixel Position node, and direction and offset math runs on Vectors. Build one from three Numbers with Combine Vector, and read a single axis back out with Split Vector.
DynamicColor
A color that resolves at render time from a gradient, a preset, or a rainbow. It carries a lookup table and a type tag. When you need to feed it into color math or into Output, convert it to a plain Color with Dynamic Color to Color.
ColorMap
A lookup table that maps an input value to a color across a range. Palettes and gradient-driven effects use it.
Enum
A fixed choice from a small set of options, resolved when the graph compiles. You cannot connect a wire to an Enum socket. You set an Enum from a dropdown on the node, for example an NDI sampler's filter (nearest or linear) or a hand-tracking node's handedness (left or right). When you change an Enum, a different code path compiles, so Spectralite recompiles the effect.
The connection rule
A wire connects two sockets of the same type. The match is exact, so a Number output goes only to a Number input and a Color output only to a Color input. Spectralite never converts a type implicitly or spreads a Number across components. So a Number cannot feed a Vector socket, and a Vector cannot feed a Color socket. If the types differ, the wire does not complete.
The strict rule keeps a graph's behavior unambiguous. Every type change in your effect is a node you placed.
Converting between types
When two nodes use different types, put a conversion node between them.
| From | To | Node |
|---|---|---|
| Number | Vector | Combine Vector (three Numbers into x, y, z) |
| Vector | Number | Split Vector (one axis out) |
| Boolean | Number | Boolean to Number |
| Color | Number | Color to Number |
| DynamicColor | Color | Dynamic Color to Color |
| Number and color components | Color | Combine Color |
| Color | components | Split Color |
The Conversion category holds the general type bridges, and the Color category holds the color assembly and disassembly nodes. Radian and degree conversion also lives in Conversion.
Effects blend cleanly across layers when intermediate Numbers stay in the 0 to 1 range. Remap rescales any range into 0 to 1, Clamp limits a value to a range, and Fract keeps only the fractional part.