Project Overview
This project showcases a physically-based Monte Carlo Path Tracer, implemented using GLSL and C++, developed as part of the "Advanced Rendering" course (CIS 561) over a 5-week period. The renderer supports custom geometry described in JSON and simulates realistic lighting and material interactions.
The implementation is inspired by the Physically Based Rendering textbook (PBRT), originally written in C++. However, all rendering logic in this project has been reinterpreted and implemented in GLSL, enabling real-time rendering on the GPU.
My Contribution
Developed a full-featured Path Tracer supporting realistic lighting through Global Illumination, Direct Lighting, and Multiple-Importance Sampling (MIS). Implemented support for a wide range of Bidirectional Scattering Distribution Functions (BxDFs) (Lambertian, Microfacet, Specular, Matte). I also added support for Area, Point and Spot Lighting.

Cornell Mirror Box

Specular Reflection & Transmission in a Dielectric Material

Microfacet reflection in a Cornell Mirror Box

Regular Cornell Box with Naive Path Tracing

Area Light rendered with Direct lighting

Spot Light rendered with Direct lighting

Point Light rendered with Direct Lighting
​​​​​​​ Â