Five
Chapters
A hands-on path from the first line of shader code to the math of raymarching a 3D scene, and then out into real projects. Each chapter is a single page of prose and interactive diagrams. They build on one another — read them in order for the clearest arc, or jump to the one you already have the pieces for.
-
01
Available
The Pixel
A shader that answers one question at every pixel — what color lives here? — and from those answers, a shape appears. Output color, pixel position, distance fields, the threshold that makes a circle, and the mix that paints it.
-
02
Available
Time and Repetition
A shader that answers a different question every frame, and the same question a thousand times across a grid.
u_time,sin, symmetry viaabs, tiling viafract. -
03
Available
Randomness and Noise
Hash functions and noise. Why a grid stops looking like a grid once every cell can pick its own number. Value noise, gradient noise, FBM, and domain warping.
-
04
Available
The Third Dimension
A shader stops answering "what color?" and starts answering "how far?" — the shift that turns a flat canvas into a 3D scene. Sphere-tracing, signed distance fields, normals, diffuse light, and smooth blending.
-
05Forthcoming
Connections
A shader becomes part of something larger. Three.js gives it 3D geometry to wear; Tone.js gives it audio to react to; and the same patterns open up for any framework that calls GLSL.
Workflow
How to actually do the work. Install the project, run the server, edit a shader, prompt an LLM, commit to your fork. A short reference for the loop most students repeat at the start of every class.
Crit
For the critique room. A framework for looking at vibecoded work together — three systems, five strata, three lenses, and the discipline of the opening statement. Meant to be read once and returned to, not studied in sequence.