Project for CS2240: Interactive Graphics, a graduate seminar with Daniel Ritchie at Brown University. Implemented a recursive Monte Carlo path tracer with Russian Roulette termination, event splitting, and full global illumination (with color bleeding and caustics). Also implemented stratified sampling, attenuated refracted paths, and BRDF importance sampling. Supports diffuse, glossy, reflective, and dielectric refractive BRDFs. Implemented in C++ and OpenGL.