Path Tracer

Path tracing is the big brother of ray tracing, able to simulate indirect lighting through recursive ray bounces and light scattering.

I implemented a path tracer during my time in graduate computer graphics sophomore spring. The path tracer uses Russian Roulette to terminate paths, the extended Reinhard operator for tone mapping from HDR, and low discrepancy sampling to decrease noise.

The path tracer supports six kinds of materials.

Cornell box lit with diffuse materials.
Cornell box with specular sphere and cube.
Cornell box with cube with a perfectly reflective face.
Cornell box with two refractive spheres.
Cornell box featuring objects with the Cook-Torrance microfacet reflectance model.
Cornell box featuring the objects with the Ward anisotropic model.

Additionally, the path tracer supports depth-of-field effects by varying sampling camera position and angle, as well as HDRI mapped backgrounds.

Depth of field blurring.
Cornell box reflection scene with HDRI map.
Specular objects with HDRI mapped background.