Monte Carlo Path Tracer
Role: Individual Developer | Software/Languages: C++, OpenGL (GLSL), Qt
For my graduate-level course, CIS 5610: Advanced Rendering, I developed a Path Tracer based on Monte Carlo methods, capable of efficiently rendering custom JSON geometry scenes with realistic lighting, materials, and textures. Over the course of a few months, I implemented various lighting integrators, different types of lighting, and BxDFs using concepts learned in class as well as the Physically Based Rendering textbook.
The main features I implemented include:
Ray Intersection Engine
To create an initial working ray tracer, I created various classes such as Ray, Camera, and Primitive to represent ray tracer architecture.
Lighting Integrators
Naive
Direct
Direct with Multiple Importance Sampling (MIS)
Full Lighting with Global Illumination
3. BxDFs (Bidirectional _____ Distribution Function)
Microfacet BSDF
Specular BRDF and BTDF
Lambertian BRDF
Matte Material
4. Light Sources
Area
Point
Spot Light
Below are some final renders of custom JSON geometry scenes with my path tracer, showcasing various material properties and lights. Also included are the renders for each of the features I listed above.