A physically-based path tracer built from first principles in C++, based on the renowned Ray Tracing in One Weekend series by Peter Shirley, Trevor David Black and Steve Hollasch.
600 x 600, ~3000 spp / 500 max bounces.
This project is a complete, from-scratch implementation of a monte carlo path tracer. It serves as a comprehensive study of the fundamental algorithms and physics behind offline rendering, covering a wide range of techniques from basic ray casting to advanced features like volumetric rendering and multiple importance sampling. The codebase is a direct implementation of the concepts taught across all three books in the series.
Core Rendering Engine:
- Multi-threaded rendering
- Monte Carlo path tracing
- Ray-scene intersection accelerated by AA-BVH
Camera & Image Generation:
- Positionable camera with a thin-lens model for adjustable defocus blur
- Motion blur for kinetic objects
- Per-pixel supersampling for anti-aliasing and final image gamma correction
Materials, Textures & Volumes:
- Material system supporting Lambertian, Metallic, and Dielectric surfaces
- Support for solid color, image, and procgen Perlin Noise textures
- Indirect volumes for participating media like smoke and fog
Illumination:
- Emissive materials
- Importance Sampling, Mixed PDFs

