Appearance
Browse by topic
Cross-cutting view across milestones. Useful when prepping for a specific kind of interview question rather than reading chronologically.
SDF / ray-marching
The foundation of the engine's rendering — every concept here builds on the march loop.
- P0-C1: SDF sphere marching — t starts at camera, step by d, hit when d<eps, miss when t>MAX
- M2-C1: SDF composition — why
minworks, why "march each separately" doesn't (esp. for smin) - M2-C2: Central-difference normals — the gradient of the SDF field IS the normal; works for any composition
- M2-C3: Box half-extents — the symmetric parametric handle that makes the
abs(p)mirror fold work
BRDF / shading
The Disney principled BRDF, broken down into its four building blocks. Includes the double-divide bug that's shipped in many production codebases.
- M-mat-C1: GGX distribution (D) — heavy-tailed microfacet NDF; histogram intuition
- M-mat-C2: Smith height-correlated G — masking/shadowing, and the Jacobian-absorption packaging trick (don't double-divide!)
- M-mat-C3: Schlick Fresnel + F0 — why dielectric rims are dramatic and metallic rims are subtle (the elevator analogy)
Web / wasm / Rust ecosystem
How a Rust renderer plugs into a browser.
- P0-C2: wgpu pipeline model — Device / Queue / Surface / Pipeline / BindGroup; the startup-vs-per-frame split
- P0-C4: wasm-bindgen bridge —
app-wasmis the only crate compiled to wasm; one wasm call per frame - S1: serde-wasm-bindgen — trait-based design, why
to_valueskips JSON.parse round-trip - S2: console_error_panic_hook — swap stderr-bound default hook for one that calls
console.error
Collaboration / data model
the engine's "from day 1" multiplayer-ready data model.
- P0-C3: Yrs / CRDT basics — Doc + MapRef + Transactions + Observers; same API for single-user and multiplayer
Common interview question → concept map
| If they ask about… | Read… |
|---|---|
| "How does ray marching actually work?" | P0-C1 |
| "Why GGX over Beckmann?" | M-mat-C1 Step 2 |
| "What's the most common bug you've seen in PBR shaders?" | M-mat-C2 — the double-divide |
| "Why is F0 = 0.04 for plastic?" | M-mat-C3 Step 4 |
| "How would you composite two SDFs smoothly?" | M2-C1 — and the smin discussion |
| "What does WebGPU give you over WebGL?" | P0-C2 Step 7 |
| "How does Yjs work? What's a CRDT?" | P0-C3 |
| "How would you debug a panic in wasm?" | S2 |