Drag to orbit. The image restarts and converges again. Change the aperture and watch the focus roll.
A progressive path tracer in one fragment shader.
LUMEN is a Monte Carlo path tracer. Each frame casts one ray per pixel, bounces it up to six times through a small scene with analytic intersections (spheres, boxes, a Cornell-style room), and accumulates the radiance into a floating-point texture. The display pass divides by the sample count, applies an ACES tone curve, and dithers. Leave it alone and the noise resolves into a clean render; move the camera and it starts over.
Materials are Lambertian diffuse with cosine-weighted sampling, rough metal with a perturbed reflection lobe, and a dielectric with Schlick Fresnel that chooses between reflection and refraction stochastically. A rectangular area light on the ceiling is sampled directly at every diffuse bounce (next-event estimation), which is what makes the soft shadows appear within a second instead of a minute. Russian roulette terminates low-energy paths.
The camera is a thin lens: rays originate from a disc on the aperture and converge on the focal plane, so depth of field is free and physically correct. The random stream is a PCG hash seeded by pixel, frame, and bounce, which is why the accumulation has no visible pattern.