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 chip — scalar, 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 varying|v| 0.1 → 2.5 — the range of the vector's lengthrange
velocity (stored px per frame)|v| 12 → 540 px/s — length × the comp's frame raterange
Non-numeric (string)variesvaries
Missing / count 0—absent

A varying vector's per-component bounds ("x from −18 to 18") say nothing useful, so the row shows the magnitude range instead — for velocity that is the speed, in the same px/s unit as Point Attributes' Speed Range and the Point Solver's speed parameters. Captures from older engine builds carry no magnitude and fall back to varies.

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.

  • Attribute name fields — the same attribute data, offered as a picker on every parameter that asks for an attribute name.