Everything between an idea and a shipped shader
The editor is where shaders are built; the embed packages are how they ship. Both work on the same artifact: a plain JSON node graph.
The editor
A node canvas built for shader work — typed, annotated, and versioned.
Typed connections
Every port carries a TSL type. Connections only snap when the types line up, so the graph on screen is always a shader that compiles.
Frames, notes & comments
Group nodes into frames, leave notes on the canvas, and discuss changes in comments — the graph stays readable as it grows.
Versions & rollback
Autosave records versions as you work. Roll back to any earlier state of the graph when an experiment goes sideways.
Community forking
Publish a workflow for others to browse, and fork any published shader into your own editor as a full, editable copy.
The embed
One React component turns any workflow id into a live shader in your app.
Live-draft updates
Embeds fetch the live draft, not a frozen build. Every save in the editor shows up on the embed's next revalidation — no publish step.
WebGPU with WebGL fallback
Rendering happens on the viewer's GPU: WebGPU where available, WebGL2 everywhere else, and a fallback slot for devices with neither.
R3F interop
useWorkflowNode returns the workflow's output as a live TSL node, ready to drop into your own React Three Fiber materials.