The idea for my final project originally came from a similar project done by a student in a previous version of CSE 168. Although I had first thought about doing a project involving volumetric scattering (likely something involving the cool disco ball picture we saw in the slides), I decided to implement photon mapping after we were introduced to it in class.
I wanted to implement a few key features for this project:
I started out by by implementing area lights. As is standard, I chose to render the Cornell box. After spending some time figuring out how to get the light on the ceiling to actually show up in the final image, I managed to produce the following result:
After that, I implemented an Oren-Nayar material and started tweaking with the roughness parameters. I eventually decided to use Lambertian materials in the final images, but I thought that it was worth investigating another material type:
The cornell box is often rendered with a metallic, reflective sphere and a glass-like sphere, however, so I focused on implementing the Fresnel conductor and dielectric materials next:
It was at about this time that I found the chess scene online and started working on rendering that. I started with just a basic, monotone model (with some glass knights):
Next, I went back to the Cornell box and worked on getting photon mapping to work properly. This example used both a global photon map and a caustics map for lighting:
I decided to use just the caustics map for my chess scene and use path tracing to compute the rest of the lighting. First I tried to display nice-looking caustics using a small box, but the result was quite noisy:
So, I changed the player on the black side to be a sphere, and fixed the positioning issue with the knights and bishops on each side:
In the end, I chose to animate a short chess match that I found online. It contains about 21 moves total (11 turns) spread across approximately 500 frames, and you can watch to find out who wins:
In total, the scene contains about 145,000 triangles spread across 100 or so different objects as well as two spheres representing the players. The pieces on each side use Lambertian materials, and each of the players is a Fresnel dielectric sphere with relatively small index of refraction. The game board is rendered with a Fresnel conductor material, which is why some of the pieces are visible on the edge of the board. The board is situated on top of an infinite plane, with a point light illuminating the scene from the right of the board.