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
Cornell Mirror Box
Specular Reflection & Transmission in a Dielectric Material
Specular Reflection & Transmission in a Dielectric Material
Microfacet reflection in a Cornell Mirror Box
Microfacet reflection in a Cornell Mirror Box
Regular Cornell Box with Naive Path Tracing
Regular Cornell Box with Naive Path Tracing
Area Light rendered with Direct lighting
Area Light rendered with Direct lighting
Spot Light rendered with Direct lighting
Spot Light rendered with Direct lighting
Point Light rendered with Direct Lighting
Point Light rendered with Direct Lighting
​​​​​​​  



Back to Top