Monte Carlo global illumination ยท Cornell box ยท Progressive accumulation
Scene change resets accumulation
Max target: 512 spp
Each frame traces one random ray per pixel. Samples accumulate via a ping-pong framebuffer โ the more samples, the less noise. Colour from red/green walls “bleeds” onto nearby surfaces.
Physically accurate rendering via Monte Carlo integration. Each pixel fires many rays that bounce randomly until they reach a light source โ averaging the results gives a noise-free image over time.
The rendering equation (Kajiya 1986) computes outgoing light L at a surface as the integral of incoming light ร BRDF over the hemisphere. Monte Carlo solves this by sampling random directions according to the BRDF distribution. Each sample is unbiased โ the image converges to exact global illumination given infinite samples. Soft shadows, colour bleeding, and caustics emerge automatically from the physics, without special-case code.
Drag to orbit the camera. The image progressively refines โ each frame adds more samples per pixel. Switch between scene presets to see Cornell box, sphere clusters and reflective surfaces. Increase the max bounce depth to capture multiple-bounce indirect light. The sample counter shows how many rays per pixel have accumulated. Click Reset Accumulation to restart from scratch after changing the scene.
Pixar's RenderMan uses path tracing to render every film frame โ a single production frame may accumulate 10 000+ samples and take hours on a render farm. The convergence rate of Monte Carlo path tracing is 1/โN: doubling quality requires quadrupling the sample count. GPU hardware ray tracing (NVIDIA RTX) launched in 2018, enabling real-time path tracing in games for the first time by hardware-accelerating the BVH intersection queries that dominate path-trace computation.