For my final project, I took a little bit different approach. Instead of focusing on making a single image, I decided to make a movie. Since I dont feel like I have a lot of artistic talent, I decided to challenge myself by implementing as many cool rendering techniques as possible and optimizing them to the point that I could render a 30-45s movie with all these effects strung together. I was also able to round up some motion capture data of myself and a texture and model of my head, so I used that to display my algorithms.
Stuff I implemented:
-
Image-based texture mapping with bilinear filtering.
-
Normal mapping using object-space normal maps.
-
Glossy reflection material.
-
Ambient occlusion material.
-
Photon mapping
-
Indirect diffuse/global illumination using a global photon map with final gather rays.
-
Caustics using a caustics photon map.
-
Irradiance caching to speed up the global illumination/final gather enough to render enough frames for a movie. (Note: my irradiance caching code is based very heavily on the irradiance caching code in pbrt, so credit where credit is due.)
-
Simple uniform grid supersampled antialiasing.
-
Fresnel-weighted reflection/refraction using the Schlick approximation. (Im not sure if this code is 100% correct or not, but is seems to give the more reflection at grazing angles effect.)
Heres the final product:
CSE168 Final Project.mpg
.
Final rendering competition image. I won honorable mention. :)