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.