Skip to content

Details Panel

Glanceable, always-truthful overview of whatever data flows through the selected node. Not an editor — a mirror of engine state that helps you build a mental model as data moves through the graph.

The Details panel is the second tab in the Properties panel (the first is Parameters). Switching between nodes keeps whichever tab you last opened — selection does not reset the tab.

Domains

Details is organised by domain. A section is rendered only when the selected node has an output port of that domain's type — a Circle node shows just Geometry; a Noise node shows Raster + Values + Fields. Within a section, empty states are explicit ("No attributes on this output"), so the absence of data is always visible rather than hidden.

Domains, in display order:

  1. Geometry — shape and points output. Shows point count, path count, and a list of point + path attributes.
  2. Raster — texture output(s). Shows width × height · format per port.
  3. Text — text layout data. Shows content preview, font, size, glyph/line count, bounds.
  4. Fields — scalar / vector / color field output(s). Shows port name and source kind (e.g. noise (Perlin, fBm Standard), raster, constant 0.5).
  5. Values — literal scalar / vec2 / vec3 / color output(s). Shows the raw value per port.

When a node has multiple output ports of the same domain, each appears as its own row in that domain's section (e.g. Noise emits both scalarField and vectorField under Fields).

Attribute rows

Every attribute entry follows the same row layout:

● name    value    scalar
  • Coloured dot — matches the port-type colour used in the node graph (scalar cyan, vec2 yellow, etc.).
  • Name — attribute key. Built-ins (index, curveu, rotation, scale, opacity, color, strokeWidth, …) render at full brightness. User-defined names get a custom badge.
  • Value summary — see below.
  • Type chipscalar, vec2, vec3, vec4, string.

Clicking a row copies the attribute name to the clipboard — useful for typing into downstream ShapeAttributes / PointAttributes / AttributeToField Custom fields.

Value summaries

The value column communicates behaviour, not detail:

CaseLabelTone
Constant (min == max)0.5constant
Numeric range0.1 → 2.5range
Vec with all components constant(0.5, 0.3)constant
Vec with any component varyingvariesvaries
Non-numeric (string)variesvaries
Missing / count 0absent

Integer-typed attributes (index, glyphIndex, …) are detected from the bounds and render without decimals.

Ordering

Within each attribute list, built-in names sort first in declaration order, then user-defined names sort alphabetically. This keeps the always-present built-ins at predictable positions across nodes.

Raster rows

out    1920 × 1080 · RGBA · f16

Engine emits a friendly format label per port: RGBA · f16 (the internal working format), RGBA · sRGB u8, R · f16, etc.

Field rows

●  scalarField    noise (Perlin, fBm Standard)
●  vectorField    noise (Perlin, fBm Standard)

Fields are lazy functions — the panel shows the source kind (how the field is generated) rather than sampling it. Source labels cover: noise, random, raster, constant, sdf, gradient, oscillate, voronoi, remap, field math, attribute lookup.

Text rows

"Hello world"
11 glyphs · 1 line
Inter 400 · 48px
bounds 184 × 56

Shows a truncated content preview, glyph/line counts, resolved font + size, and the layout bounding box.

Value rows

●  scalar    0.47    scalar
●  vec2     (0.21, 0.88)    vec2

Disconnected nodes

Selecting a node that isn't yet wired to the composition's Output still populates its domains. The editor sends the selected node IDs to the engine as additional reachability roots, so the engine evaluates the selected node and its upstream chain regardless of whether the chain reaches the Output node. This lets you inspect work-in-progress before fully wiring it up.

Consumer-only nodes

A small whitelist of consumer-only nodes (currently just AttributeToField) doesn't produce geometry themselves but reads attributes from upstream. Their Details panel surfaces the upstream geometry with a Consumes from <UpstreamName> label so it's obvious where the data is coming from.

Layer fallback

When no single node is selected but a layer is active, Details reflects the layer's Output node — the compositing sink. Use this to see the final layer-level data without having to click into the graph.

Live updates

Details refresh on every render — editing any upstream parameter that changes attribute values shows the new range within one frame. Selection changes also trigger a re-render, so clicking a disconnected node pulls fresh data for it immediately.

Caddis — professional motion design.