Physically-Based Path Tracer

My image that I submitted to the rendering competition in the graphics course at ETH Zurich in 2017. I placed second in the competition and received a small prize.  The scene includes these features: importance sampled environment maps,&nb…

My image that I submitted to the rendering competition in the graphics course at ETH Zurich in 2017. I placed second in the competition and received a small prize.  The scene includes these features: importance sampled environment maps,  thin-lens depth of field with chromatic aberration and polygonal apertures, textures, normal and alpha maps, directional lights, translucency BSDF, specular BRDF and a dielectric BSDF. I built the scene in SideFX Houdini using assets from Megascans. The final scene contained up to three million polygons and several textures all between 512x512 up to 4K.

Overview

This path tracer was written as part of the computer graphics course at ETH Zurich. We were given some starting code but had to implement almost everything involving the light simulation. To find out more about what was included in the starter code, check out the course page here. Everything had to be implemented in C++.  Scroll down to see more renders.

For my competition entry I implemented:

  • Importance sampled environment emitter
  • Homogeneous media, Henyey-Greenstein phase function and a volumetric MIS path tracer
  • A more advanced thin-lens camera model including regular polygons as apertures and chromatic aberration
  • Textures for specular, alpha, normal and albedo maps
  • Translucency BSDF, which lets rays randomly pass through the backside with a diffuse lobe
  • Directional light

As part of the course assignments, we had to implement:

  • Different strategies to transform 2D random samples into other distributions or coordinates
  • Area emitter sampling
  • Multiple importance sampled unidirectional path tracing
  • Microfacet BRDF and Dielectric BSDF
  • Basic photon mapping