Chapters are organized by topic, not by week. Each stands on its
own, links the interactive demos it needs, and cites its papers. Your
offering’s course site says which chapters go with which session.
Each chapter states its definitions, works every formula by hand at least once, draws its figures
from the same library the demos run, carries hands-on tasks, names where each method fails with
numbers, and ends with exercises and their solutions. Open a card to read the chapter; press
? for what it covers and what it assumes.
Start here
Seventy-five years of graphics in eight eras: every later chapter has an address here.
Covers: what computer graphics is against its neighboring fields and where it is used; the machines from Sketchpad on, with their architecture and cost then and in 2026 dollars; the problems the field solved, each with its named solutions, people, organizations and papers; frame buffers and the cost thread; the graphics pipeline period by period; CGI studios and films; the new frontier of learned graphics; organizations and honors; the papers, textbooks, websites and free software to read next; supplements with the full detail
Needs: nothing
The homework tools
One pair per homework track. Read the first chapter of your track before Homework 1; the shader chapter before Homework 5.
Covers: installing the pinned version; the editor’s windows; scenes, objects and components; the script lifecycle and the two clocks, with frame steps worked; C# for Java and C++ programmers, and the struct-copy bug; the Transform hierarchy with a chain worked local to world; Vector3, Quaternion and Matrix4x4 against the text’s conventions, handedness and Euler order included; meshes, materials, prefabs, cameras, lights; input and UI; reading a class-example project; the implement-and-replace rule
ShaderLab, the Two Programs, and the Data Between Them
Covers: where the shader sits in the pipeline; a shader file outside in; semantics and the two programs, one vertex worked; the built-in matrices and uploading your own; properties and globals; textures, tiling and the checker worked; lighting in the shader and the normal hack measured; render state; the errors and what they mean
Needs: rasterization, texture mapping, illumination, Unity for this course
The Server, the Scene Graph, and the Course Library
Covers: serving the course and why a page opened from disk fails; ES modules and import paths; the developer tools; three.js’s scene, objects, geometry and materials mapped to Unity’s; the render loop and the frame step; Object3D local and world, with a chain worked; conventions against the text’s and the Matrix4.set transpose measured; the course library and the orbit keys; how a homework runs and how to read its checks
ShaderMaterial, Uniforms, Varyings, and the Normal Matrix
Covers: where shaders sit in the pipeline; a ShaderMaterial end to end; GLSL for this course; what three.js declares and what a RawShaderMaterial leaves out; uniforms from JavaScript; per-pixel diffuse lighting in world space and the normal matrix measured under scale; linear light and the output conversion, one pixel read back; textures and placement; render state; reading a compile error and painting values as colour
Needs: rasterization, texture mapping, illumination, WebGL for this course
Covers: vectors as displacements; bases and coordinates; the dot product (angle, projection, which side) and the cross product (normal, area, a frame) worked on one pair; the triple product; Gram–Schmidt; lines, segments, distance to a line in 3D; planes, signed distance, ray–plane; barycentric coordinates; what floating point does to all of it
Covers: the three properties of a rotation matrix checked; reflections; columns are where the axes land; Rodrigues derived and as a matrix; the log map and angular velocity; quaternions with the sandwich, the double cover, and both conversions worked; composition and slerp; Euler conventions across engines, extraction, and gimbal lock shown; drift measured; a comparison of representations
Covers: the affine family and what it preserves; mirrors and winding; the homogeneous lift and how matrices are stored; composition and inverse as block formulas, with conditioning measured; a matrix as a frame, active and passive; TRS, polar decomposition, and the shear it cannot store; normals and planes by the inverse transpose; pivots and conjugation; where affine ends
Covers: a tree of local transforms and the composite rule; a two-node chain worked and inverted; joints as pivot sandwiches; the recursion, the matrix stack, and dirty flags; local to world, world to local, and between any two nodes; the camera as a node; bounding volumes and culling up the tree; instancing; inherited shear; glTF
Covers: the look-at basis; the view matrix as a rigid inverse; field of view, focal length and aspect; the pinhole divide; the projection matrix entry by entry, with the depth row derived; what a depth buffer can resolve, and reversed z; frustum planes and culling; off-axis and stereo frusta; one vertex through the whole chain to a pixel; orthographic; the thin lens; camera controls and the look-at pole
Covers: edge functions and one pixel worked; triangle setup in fixed point; the top-left rule; barycentric interpolation; near-plane clipping; aliasing and supersampling; the depth buffer, early z and overdraw; perspective-correct interpolation; the over operator and premultiplied alpha; Bresenham; the pipeline stages; deferred and tile-based pipelines; the frame loop, double buffering, and the budget
Covers: vertex and index arrays; the grid built from a formula with its counts; the half-edge structure and a ring walk; Euler’s formula, manifolds and valence, measured on the bunny; face and vertex normals worked on the lifted grid; hard edges; flat, Gouraud and Phong shading on one sphere; editing and Laplacian smoothing; surfaces of revolution and the pole; marching cubes; the edge collapse and the quadric error worked; the bunny’s LOD ladder and the distance rule; progressive meshes; the vertex cache; OBJ and glTF
Covers: texture coordinates, projections and unwrapping; wrap modes; placement as a 3×3 affine matrix with both demo matrices worked; nearest and bilinear filtering by hand; minification, mipmaps, the level from screen-space derivatives, anisotropy; block compression on one 4×4; multi-texturing and procedural textures; bump and normal maps with tangent space and parallax; cube maps and environment mapping; shadow maps
Covers: N, L, V; Lambert’s cosine derived, with irradiance and the diffuse π; the mirror direction from the projection split; Phong and Blinn specular worked at the demo’s marked point, with energy normalization; the full color; normals under a transform; directional, point, spot and area lights with attenuation and shadows; several lights; ambient occlusion, spherical harmonics and image-based light; shading cost per vertex, per pixel, deferred; HDR and tone mapping
Needs: vectors, meshes; affine for the normal matrix
Shape, motion and interaction
Smooth shapes, things that move, and the person at the controls.
Covers: parametric curves; Bézier and de Casteljau worked both ways; the matrix form, basis changes and degree elevation; subdivision rendering with the flatness test; arc length and curvature; continuity, Hermite and Catmull–Rom; B-splines with knots and de Boor worked; rational curves and NURBS; Chaikin; the bicubic patch; Catmull–Clark on a cube and Loop on an icosahedron worked; implicit surfaces and metaballs
Covers: keyframes and the keyframe demo’s spline worked; the curve editor and its monotone-time constraint; easing and the twelve principles; slerp, normalized lerp and squad; why matrices are never interpolated; forward and two-link inverse kinematics; the bind pose and linear blend skinning with the collapsing joint; explicit against semi-implicit Euler on a spring; particles and a mass-spring cloth with its stability bound derived and measured; collisions; motion capture and blend trees
Covers: the event loop and the fixed timestep with its accumulator; MVC on the course’s transform demo, with undo; events and device pixels; unprojection through the matrices checked against the ray chapter; picking by ray and by ID buffer; hit testing in two dimensions; dragging with constraints, snapping, and the gesture state machine; the arcball worked to the quaternion and the orbit controller’s constants; latency, threads, and virtual reality
Needs: viewing, ray tracing
Light, sampling and color
Honest light and what the eye and the display do with it.
Covers: radiance and the rendering equation term by term; the BRDF, measured and modeled, and energy conservation; microfacets (D, G, F) with a full evaluation by hand; Fresnel exactly for dielectrics and conductors; the furnace test and multiple scattering; the metallic/roughness model on a computed sphere grid and the Disney parameters; sampling GGX; image-based lighting and the split sum; transmission, subsurface and media; path tracing versus real time
Covers: camera rays; sphere, triangle (Möller–Trumbore) and box intersections worked; instancing; Whitted’s recursion with Snell and Fresnel and a rendered scene; distributed rays: soft shadows, thin lens, motion blur; the bounding-volume hierarchy and the surface-area heuristic; Monte Carlo integration, light and BRDF sampling, multiple importance sampling measured; path tracing, next-event estimation and Russian roulette, with a Cornell box rendered by the chapter’s code; participating media; radiosity, photon maps, bidirectional methods, denoising and hardware rays
Needs: viewing, illumination; light transport for the equation
Covers: the sampling theorem with three reconstructions measured; aliasing worked and a zone plate rendered; the Fourier view; prefilter against supersample; filters and the Mitchell–Netravali family; coverage and MSAA along one edge; coverage to alpha and morphological methods; Wu’s lines; texture derivatives and the mip level; shading aliasing; random against stratified samples measured; aliasing in time and temporal antialiasing
Needs: rasterization, texture mapping, image space
Covers: spectra and photometry; the CIE observer integrated on blackbodies; chromaticity and gamuts; the sRGB matrix and transfer function worked on one color; 8-bit steps and banding; a blend and the over operator in code space against linear light; CIELAB and ΔE, HSV; white balance by Bradford; color-vision deficiency simulated; P3 and Rec. 2020; PQ and HLG; dithering; Y′CbCr; displays, bit depth, HDR
Needs: illumination for tone mapping
Learning images and scenes
The machinery of the neural weeks: models that learn images and scenes.
Covers: a network as a function, with activations, a forward pass and backpropagation through two layers worked; momentum and Adam; capacity, overfitting and the held-out set measured; convolution and attention worked on small inputs; embeddings read from the course’s trained network, with arithmetic on them; encoders, decoders, and two encoders trained into one space (CLIP) with the contrastive loss and its temperature worked
Covers: images as vectors and as functions; sampling, the cosine basis, and aliasing unrolled; the Fourier basis and spectra; filters, blur and edges on a digit and a render; Gaussian and Laplacian pyramids; histograms and equalization; JPEG on one block; PSNR and SSIM and where they fail; the thin sheet of natural images measured on 2,000 digits; why the concept map is not invertible
Covers: destroy, learn to undo, sample: schedules, the forward process on a digit and on a spiral, the exact denoiser and the score field, four parameterizations, the variational bound and the simple loss, DDIM stepping worked to the last digit, samplers against step count measured on the course’s own model, the SDE and probability-flow ODE, flow matching, memorization versus a network, guidance and its clamping, the scalings to Stable Diffusion, ControlNet, text-to-3D, video, evaluation, and what still breaks
Covers: NeRF as a field, positional encoding, transmittance from Beer–Lambert, and the volume-rendering integral run by hand along one ray; coarse-to-fine sampling; training; 3D Gaussian splatting with a splat’s covariance, projection and spherical-harmonic color worked and three splats blended by hand; training a splat scene; extracting a mesh; meshes, NeRF and splats compared; learned scenes against learned images
Needs: viewing and projection; the diffusion chapter for the contrast
Covers: rendering as a function of scene parameters; why the inverse is ill-posed, with the albedo–intensity valley computed; analysis by synthesis on the course’s own differentiable renderer; forward and reverse automatic differentiation worked on one pixel; the gradients of shading and lighting checked against finite differences; the visibility discontinuity and its boundary term; edge sampling, reparameterization, path-space methods and soft rasterizers; Mitsuba 3, Dr.Jit and radiative backpropagation; recovering materials, lights, geometry and volumes; NeRF and splatting as inverse rendering; priors; open problems
Needs: illumination, ray tracing, the networks chapter; learned scenes for Section 10
Chapters use MathJax for formulas and link to the course’s demo
library; read them through the course site or download and open in a
browser. Older links to handouts/ch01-… and
handouts/ch10-… redirect here.