Skip to content
Render QuestHuman Quest · Tools
Menu
SymptomsLabsTechLearnGlossaryAboutOpen the first labAsk a questionSource on GitHubHuman Quest
Open the first lab

Interactive graphics labs

Learn graphics by moving the numbers.

A transform is not a table of sixteen numbers — it is a motion, so here the numbers are under your fingers, and the matrix, the geometry and the pixels move together.

interactive labs
10interactive labs
curated resources
37curated resources
stock images
0stock images
Rendering right now: the projection lab with its controls taken away. The orange wireframe is a camera’s view frustum, breathing as its field of view changes.

How a lab works

One idea, and the controls to it.

1

Pick one idea

10 labs in sequence, each one assuming the one before it.

2

Move the numbers

Drag a matrix and watch the geometry move. The numbers driving the render sit beside it, live.

3

Know where it stops

Every lab ends with what you can now do, and what it did not teach you.

The labs

10 labs, one idea each.

All labs
01WebGL
6 min read

Start here

The Model Matrix

Move, turn and stretch an object by dragging the numbers that do it, and watch the matrix fill in as you go.

What you should come away withWhy a matrix chain reads right to left, and why the columns are the object’s own axes.

  • translate
  • rotate
  • scale
  • composition order
  • basis vectors
Open the lab →
02WebGL
6 min read

Projection & the Frustum

See the camera’s frustum as an object in the world, and the picture it produces, side by side.

  • perspective
  • orthographic
  • near / far
  • clip space
  • field of view
Open the lab →
03WebGL
5 min read

Coordinate Spaces

Follow one vertex from model space to the pixel it lands on, one stage at a time.

  • model space
  • view space
  • clip space
  • NDC
  • viewport
Open the lab →
04WebGL
8 min read

Light & Normals

Move a light around a surface and watch the shading model respond, term by term.

  • normals
  • lambert
  • specular
  • inverse-transpose
Open the lab →
05WebGL
9 min read

Textures & Sampling

Wrap, filter and mip a texture, and see what each sampler setting actually costs you.

  • UV coordinates
  • filtering
  • mipmaps
  • wrap modes
Open the lab →
06WebGPU
7 min read

Compute & Particles

A hundred thousand particles moved entirely by the GPU, with no per-particle work on the CPU at all.

  • compute shader
  • storage buffers
  • workgroups
  • WGSL
  • instancing
Open the lab →
07WebGPU
6 min read

Draw Calls & Instancing

Draw the same object ten thousand times and watch where the time actually goes.

  • instancing
  • draw calls
  • instance_index
  • CPU cost
Open the lab →
08WebGL
9 min read

Colour & Gamma

Split one lit sphere down the middle and light the two halves in different colour spaces.

  • sRGB
  • linear light
  • gamma
  • encode / decode
Open the lab →
09WebGL
8 min read

Depth & Transparency

Make z-fighting happen on purpose, then fix it from the frustum — and find out why transparency needs sorting.

  • depth buffer
  • z-fighting
  • blending
  • draw order
Open the lab →
10WebGL
8 min read

Write a Shader

An editable fragment shader that recompiles as you type, with the driver’s own errors underneath.

  • fragment shader
  • GLSL
  • compile errors
  • uniforms
Open the lab →

The end of the sequence, for now

10 labs, each one assuming the one before it. What comes after them is written down, including what was proposed and turned down, with the reason.

Learn

Then read the best of what everyone else has written.

The labs cover the spine. For the rest there is a curated path of 37 resources across graphics and game development. Most are free. Every link is checked.

Open the reading path

How it is built

An instrument, not a brochure.

01

No framework in the way

Raw WebGL and WebGPU, and a few hundred lines of matrix maths. The plumbing a scene graph would hide is the actual subject, so none of it is hidden.

02

The numbers are on screen

Every lab puts the numbers driving the render next to it, live: the matrix, the depth budget, the measured cost of a frame.

03

Checked, not asserted

The matrix library ships with a numeric test suite. Claims about how a projection behaves are verified on every commit.

Lab 01 · The Model Matrix

Start by moving one number.

Found a mistake, bad arithmetic, a figure that will not run? Open an issue. Stuck on a lab? Ask in Discussions. Both reach me, and both are public.