Simple but optimized CPU path tracer based on Peter Shirley’s ray tracing series.

During the summer of 2019, I wrote a simple CPU path tracer based on Peter Shirley’s Ray Tracing in One Weekend series. You can find it on GitHub.

It supports the following features:

  • Material-sampled path tracing
  • Diffuse, glossy, and transparent materials
  • Depth of field
  • Motion blur
  • Bounding volume hierarchy for intersection queries
  • Solid texturing with Perlin noise
  • Texture maps
  • Emissive lights
  • Homogeneous volumetric scattering (also used for subsurface scattering)
  • Rendering GUI

Additionally, I implemented the following performance optimizations:

  • Switching the guide’s OOP style to a data-oriented design
  • Tiled multi-threaded rendering
  • SIMD vector math and intersection logic


example0 example1

Written on June 21, 2021