Skip to content

essentialblend/shirleytracer

Repository files navigation

ShirleyTracer

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.

About

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.

Key Technical Features:

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

render Part 1- 1920 x 1080, 150 spp, 150 max. bounces

About

My first attempt at writing a path tracer following Peter Shirley's series.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages