Monte Carlo CPU Pathtracer

C++

My Monte Carlo pathtracer is based on the book Physically Based Rendering: From Theory To Implementation. It can handle diffuse, reflective, microfacet, and Fresnel materials, and three types of lights. It also features global illumination with multi-importance sampling and Russian roulette ray termination, as well as procedural shapes made of signed distance functions, and a thin lens camera that simulates depth of field.