Nodes and types
The node registry, port types, and what may connect to what.
A node is an instance of a spec from the registry — a typed wrapper around a
three/tsl function. Each spec binds an id, label, category, typed input
ports, and one typed output. The registry ships with the app: 136 nodes across
15 categories:
inputs, operators, constructors, math, trig, vector, derivative, interpolation, color, blend, uv, procedural, random, oscillators, conditional.
Beyond registry specs, the editor has a few built-in node kinds: primitive input nodes (float, vec2, vec3, vec4, color, bool, uint), the singleton output node, texture nodes backed by uploaded images, and frame nodes for grouping.
Port types
Ports carry TSL types: float, vec2, vec3, vec4, color, uint,
bool, and texture. Some ports accept any.
Connection rules
New edges are type-checked when you create them; the editor refuses an incompatible drop with a toast. The policy mirrors what TSL itself tolerates:
- An exact type match always connects, and
anyon either side always connects. floatanduintsplat into any numeric or vector type — a single float fans out to every component of avec3, for example.colorinterchanges withvec3andvec4.- Dragging from a swizzled source handle (
.x,.r, …) produces afloat. - A texture node outputs the sampled
vec4; itsuvinput takes avec2.
The check guards edge creation only. Stored edges are never re-validated or removed, so graphs saved under an older policy keep rendering.