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:

  1. 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.

  2. 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.

Previous
Previous

Procedural Terrarium Generator Tool

Next
Next

“LEGO-Fier” Procedural Modeling Tool