Fluorite
Concepts

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 any on either side always connects.
  • float and uint splat into any numeric or vector type — a single float fans out to every component of a vec3, for example.
  • color interchanges with vec3 and vec4.
  • Dragging from a swizzled source handle (.x, .r, …) produces a float.
  • A texture node outputs the sampled vec4; its uv input takes a vec2.

The check guards edge creation only. Stored edges are never re-validated or removed, so graphs saved under an older policy keep rendering.

On this page