VFX & 3D

Procedural graphs

Build readable VFX node graphs with explicit inputs, typed connections, editable parameters, and render verification.

Updated August 28, 2026

Procedural graphs

Procedural graphs describe how sources, geometry, fields, effects, simulations, and render outputs relate. The graph is most useful when it remains understandable six weeks later, not when it has the largest possible node count.

Visual reference

Procedural VFX render workflow

Keep procedural graphs readable enough that inputs, simulation logic, and render output can be inspected independently.

Build from the output backward

Start with a visible source and a renderer/output. Insert one operation at a time between them. After every structural change, confirm the graph still validates and the viewer still produces the expected image.

Keep independent concerns in branches: geometry generation, deformation, shading, particles/volumes, and final render assembly should be readable as separate stages where possible. Name important nodes and avoid crossing wires simply to make a graph look dense.

Typed connections

Oraphim's production graph uses typed scene/geometry/render sockets. If a connection is rejected or produces no result, check that the upstream node publishes the data type the downstream node expects. Do not work around a type mismatch by adding arbitrary nodes; fix the actual data flow.

Parameter animation

Animate the smallest meaningful set of parameters. For example, a procedural energy effect may need intensity, spread, and timing—not every noise control keyed on every frame. Establish the main motion first, then add secondary variation.

Example: procedural energy trail

Create a source object, generate or sample points, feed them into a motion/field operation, add a trail or glow treatment, then route the result through the appropriate renderer. Animate source motion over 4 seconds. Keep preview density modest until timing feels correct, then raise quality for the final render.

Verification

Save, reopen, scrub from frame 0 through the end, and render a short range. Watch for disconnected branches, parameters that reset, node identities changing after duplication, and preview-only behavior that does not survive export. Complex graphs should be versioned before major rewires.