Description
Over the course of Physics-Based Rendering (15468) at CMU, I worked on the course assignment deliverables of creating a path tracing renderer given a starting cpp library of basic math/filesystem functionality. The project was verified on a number of example scenes provided in each homework, including but not limited to cornell box scenes and scenes modeled after Erich Veach's prior work. In my final project, I added volumetric photon mapping.
Features include:
- Cameras
- Ideal pinhole
- Thin lens model
Materials (BSDFs)
- Lambertian
- Phong, Blinn-Phong
- Dielectric
- Oren-Nayar
- Beckmann
Integrators
- Direct Illumination
- Path tracer using Multiple Important Sampling (MIS). Uses BRDF sampling and next event estimation + light source sampling
- Volumetric path tracer using MIS
- free-flight path sampling:
- uniform
- delta tracking
- ratio tracking
Samplers
- Uniform
- Stratified
- Quasi-Monte Carlo
Participating media
Textures
- Checkerboard
- Perlin noise
- Custom images
- Environment mapping
Other
- Photon mapping (can be toggled on/off in respect to each integrator)
To abide by CMU's (and Dartmouth's) academic integrity policy, I do not have the code implementation for this project available.