ShaderRender

A shader and 3D lab for building real-time Three.js experiences.

Role
Product Designer and Creative Technologist
Years
2026 — Now
Links
Prototype A demo of the editor. Pick a model, switch shaders and drag to orbit. Open in a new tab ↗

ShaderRender started with a frustration. Every time I wanted interactive 3D in a brand project, I had two options: learn GLSL from scratch or hand the idea to a developer and hope it survived. I wanted a third option, so I built it.

I designed and built ShaderRender end to end: the scene model, the editor, the shader system, the animation tools, the AI layer and the export paths. It was called DESSA before, but I changed the name to ShaderRender because of trademark concerns.

The editor in Design mode: a bust with a three-layer shader stack, the layer list on the left
The editor today: the model in the middle, its layer stack on the left.

One scene

In most 3D workflows, the model lives in one tool, the shader in another, the animation in a third, and then someone rebuilds it all for the web. I wanted one place. ShaderRender keeps everything in one live Three.js scene, so what I see in the editor is what the browser renders.

A scene holds meshes, cameras, lights, paths and an environment. Every mesh keeps its own geometry or imported GLB, its transform, its shader stack and its animation. The demo at the top of this page runs the real editor interface.

Four imported models in one ShaderRender scene: a gold bust, a CRT-shaded monitor, holographic tulips and a plasma heart
Four objects in one scene, each with its own shader stack.

Shader system

I split the renderer into four shader families, because designers think in looks, not in code:

  • Stylized for toon lighting, outlines and patterns.
  • Physical for roughness, metalness, transmission and real materials.
  • Mathematical for procedural motion driven by time and custom uniforms.
  • Screen for ASCII, halftone, CRT, dither and other effects on the final frame.
The bust in ShaderRender's Stylized toon shader
Stylized
The bust in ShaderRender's Physical gold shader
Physical
The bust in ShaderRender's Mathematical plasma shader
Mathematical
The bust with ShaderRender's Screen pixel-mosaic pass
Screen

The Screen family alone gives one model many lives:

ShaderRender's ASCII screen pass on the bust
ASCII
ShaderRender's CRT screen pass on the bust
CRT
ShaderRender's dither screen pass on the bust
Dither
ShaderRender's LED screen pass on the bust
LED

Layers are real, not an interface trick. ShaderRender renders each shader pass into its own off-screen frame buffer, then composites them. Every layer has its own uniforms, opacity, blend mode and order, and every object in a scene can carry a different stack.

The Layers panel for one bust: a CRT Monitor screen pass on top of a Holographic effect and an Electric Violet toon layer, each with its own opacity, blend mode and passthrough setting
One mesh, three layers. Each has its own opacity, blend mode and order.

Design and animate

Design mode is where I build: meshes, materials, shader controls and composition. Animate mode works on the same objects, so nothing gets rebuilt. It adds keyframes, cameras, lights, spline paths, work areas, playback speed and loops, and the timeline can animate shader values as easily as position.

Animate mode: keyframes on two models, a camera and the lights, played back.

Under the hood

I built the editor in React with React Three Fiber and Three.js. One Zustand store holds the scene, shaders, animation and export state. GLB and GLTF files join the same scene graph as generated models and built-in shapes.

The AI layer reads a written direction, picks the right shader family and checks the generated code before it touches the scene. It doesn’t replace the editor. Whatever it makes still shows up as normal controls and layers that you can keep shaping.

Where it is now

The live beta handles scene building, shader work, animation, saved creations, share links, and image, shader, model and video export.

The part I’m still working on is the production embed. A shared scene runs through ShaderRender today, but self-hosted export and an independent runtime need more work. My next goal is to make the path from the editor to a real website as dependable as the editor itself.

Outcome

  • Launched a live browser-based beta at shaderrender.com.
  • Built one editor for shader design, scene composition, animation, sharing and export.
Next project Kitana Lite