A self-checking course that grows a modern GPU renderer in Rust/wgpu one
render-graph node per chapter — think nand2tetris meets a miniature UE5
renderer. Windowing, device setup, and frame pacing are a pre-built
"chassis"; the learner writes Nodes and plugs them into a Graph, and
every chapter starts running and ends running. wgpu is pinned to 29.0.4
workspace-wide (see Cargo.toml for the pin rationale).
cargo run -p ch01_triangle # the classic RGB triangle, in seconds
cargo test -p ch01_triangle # same frame rendered headlessly, checked
# against a golden imagechassis/— windowing, surface, frame loop, WGSL hot-reload (given, never rebuilt)graph/— the mini render-graph executorch01_triangle/— chapter 1; one crate per chapter, each runnable + testabledocs/— mdbook tutorial; code is pulled from compiled files by include anchorCOURSE.md— the course menu: all 13 chapters + appendices with statusAGENTS.md— the eight binding design principles
Every push and pull request runs GitHub Actions (.github/workflows/ci.yml)
on macos-latest — chosen because the golden-image tests render on a real
GPU and Metal matches the machine the goldens were generated on. The
workflow builds the whole workspace, runs all headless golden-image tests,
and gates on clippy (-D warnings) and cargo fmt --check. A second job
builds the mdbook tutorial and fails on any broken include anchor, so
tutorial prose can never drift from code that compiles and renders. If the
book says a chapter draws a triangle, CI has already watched it draw one.