About

Graphics programmer building renderers — and writing about the choices the math doesn't make for itself.

> glReadPixels(contact);

> glDispatchCompute(now);

NOW // 2026.05

Wrapping up chapter five of the path tracer series — the one where the renderer finally walks into San Miguel. Starting on Vulkan fundamentals next, with frame profiling close behind.

> glEnableVertexAttribArray(focus);

  • Real-time rendering — deferred PBR, image-based lighting, moment shadow maps, SSAO, one-bounce indirect illumination. Built up chapter by chapter in Real-Time Light.
  • Offline path tracing — Monte Carlo integration over ten million triangles, with BVH acceleration, multiple importance sampling, and microfacet BRDFs. Worked end-to-end in A Path Tracer.
  • Writing it down — each chapter, a long-form case study of one renderer, written in the voice the code was built in.