Theme Catppuccin
Make yourself at homeCatppuccin

A softer light for long learning sessions.

Appearance

Loading your preference…

Dark palette

Choose a dark palette to try it.

Light uses Latte. Your choices stay in this browser.

← All six courses

Volume 03 · 16 flexible weeks

Light Transport

Follow light beyond the first bounce.

Build a CPU path tracer by understanding probability, material scattering, light sampling, acceleration, and convergence. Measure error before chasing a faster image.

Open my weekly workbench ↗
THE PROJECT / The Lantern Room
Where you’ll work

Portable C++ · macOS & Linux

Hardware & toolchain notes ↗
Your finish line

Explain your estimator, test its geometry, compare noise fairly, and present an original lighting study.

Your sketchbook / 8 chapters

Two weeks per chapter: understand and build, then investigate and finish. Repeat any week.

01
A room full of integrals ↗

Turn a direct-light renderer into a carefully specified light-transport project, beginning with one analytic integral.

This chapter’s project

A scene sketch, a written estimator contract, and a fixed-seed integral experiment with several-seed evidence.

Weeks 1–2
02
Randomness you can replay ↗

Give samples explicit state, dimensions, seeds, and reproducible ownership before comparing sampling strategies.

This chapter’s project

An original sampler plot, deterministic seed tests, and an equal-budget estimator comparison.

Weeks 3–4
03
The diffuse walk ↗

Implement a bounded diffuse path loop with a matched cosine PDF, correct throughput, and interpretable termination.

This chapter’s project

A bounded diffuse path loop, a constant-environment test, and a trace of one sample.

Weeks 5–6
04
Metal and glass ↗

Extend the learner renderer with carefully limited specular reflection and dielectric transmission, without confusing delta events with ordinary PDFs.

This chapter’s project

A material triptych, reflection/refraction tests, and a statement of supported media.

Weeks 7–8
05
Ask the light directly ↗

Extend the supplied diffuse/emission renderer with explicit light sampling and consistent PDF measures, then introduce MIS as a tested learner extension.

This chapter’s project

An area-light study, a visibility test, a PDF calculation, and a bounded MIS extension or worked estimator trace.

Weeks 9–10
06
A map for the rays ↗

Use the owned median-split BVH companion, compare it with a linear oracle, and design meaningful acceleration evidence.

This chapter’s project

A query-equivalence report, independent edge cases, and one reproducible timing comparison.

Weeks 11–12
07
The image keeps learning ↗

Build progressive linear accumulation with reset rules, useful statistics, and honest convergence comparisons.

This chapter’s project

An accumulation/reset test, a linear-color test, and an honestly labeled convergence sheet.

Weeks 13–14
08
The Lantern Room exhibition ↗

Package an original bounded CPU light-transport study with reproducible builds, tests, visual evidence, and an explicit contribution statement.

This chapter’s project

A finished CPU renderer subset, original room image, tests, build notes, and a five-minute technical walkthrough.

Weeks 15–16

Keep your hands on the work

Read the source.
Change one decision.

The companion explains its build steps, tested behavior, and remaining learner work. Keep your own contribution clear as the project grows.