CPU Ray tracing Development

CPU Path tracer in C++

Prior to building the GPU path tracer, I developed a CPU-based Monte Carlo path tracer in C++ based on the tutorials RaytracingInAWeekend, RaytracingTheNextWeek, and RaytracingTheRestOfYourLife.

Gaussian Splat demo
Gaussian Splat demo in Cornell Box - 200 samples
Raytracer demo
early example scene - 4000 samples
Raytracer multiple lights demo
later example scene with many lights - 1000 samples

In addition to the base functionality from the tutorials, I implemented multi-core tile based rendering, instanced triangle mesh structures with custom UV maps, nested binary AABB Bounding Volume Hierarchies, and a custom file format to import meshes into the raytracer from Blender.
I also added support for Gaussian Splats as native objects so they support reflections, shadows, and relighting.