The graph & cooking

Build by connecting boxes. Each node does one job, and results stay current as you work.

You make things by wiring up a graph, a network of nodes. Rather than layers or a fixed timeline, the graph records how something is built, step by step. Change any step and the result updates.

Nodes and wires

A node is a single box that does one job: draw a circle, scatter points, blur an image, play a sound. Most nodes have inputs on one side and an output on the other.

Connect an output to an input by dragging a wire between them. Data flows left to right, from the upstream node into the downstream one.

A simple chain might read:

Circle  →  Points  →  Iterator  →  (viewport)

Each node transforms what the previous one made, and the last node in a chain is what you see on screen. Where an output and an input are close enough in kind, the conversion between them happens automatically, so most chains need no explicit convert node.

Wiring a node up takes it off screen

A node whose output feeds a node that draws with it is consumed: a blur consumes the shape it blurs, and only the blur's result belongs on screen. Making that connection sets the upstream node's opacity to 0 for you, so a chain shows you the end of the chain rather than every intermediate stage stacked on top of itself. Cut the last wire out of it and the opacity goes back up.

It is a real, draggable opacity rather than a hidden flag, and the same value appears on the node and in the layer manager. Turn a consumed node's opacity back up and it draws again alongside the node consuming it, which is how you show a 3D object and the flat card rendered from it at once. Turning one down to 0 by hand only stops the live viewport drawing it: it stays a real scene object, so anything capturing or rendering it as a source still gets it.

What cooking means

A node cooks when it recomputes its output. Cooking a Blur node runs the blur and produces a fresh image. Cooking a Points node lays down new points.

Only what is needed cooks. A node whose result is not being shown, in the viewport or in an open panel, does not run at all. Each node also keeps its last result, so if nothing feeding it has changed, the saved result is handed back instead of the work being redone.

Why downstream nodes update

Change something upstream and everything downstream refreshes on its own. Bump a Circle's radius and the Points node reading it, the Iterator reading that, and the final picture all recook, in order. Downstream nodes are never told to update; their input changed.

The ripple only travels the paths a change actually affects, so editing one knob does not rerun the whole project.

Some changes don't even need a full recook. Nudging a value that was already animating (or already varying) can update in place, because the structure hasn't changed and only the number is swapped in.

The cook indicator

Every node's title bar carries a single letter that both reports and sets when the node recomputes. Clicking it cycles through three states:

There is no fourth setting. A node you have never touched shows the default for its type, which is A for a live source (pointer, camera, MIDI) and S for everything else. Setting one explicitly overrides that, so a camera can be pinned or made to freeze on pause like any ordinary node.

Auto Cook governs re-execution, not time. A camera or pointer on A re-runs while paused and its output changes, because it re-reads the outside world. A simulation on A re-runs while paused but stays on its current state: advancing a sim is what play does, not what this setting does.

Working procedurally

Because the graph holds how everything was built, any step can be changed at any time. Adjust a node near the start of a chain and the whole result reshapes downstream, with no manual redoing.

See also