Results

Output Normalized z-buffer

Results with Phong Shading

The green material is Phong

Output Normalized z-buffer

Multi-Threading

Implemented multi-threading with std::thread. My implementation is slightly different than that described in class. I simply sub-divide the image into chunks and give each chunk to a thread for rendering.

Machine Specs

Render time 0:00:00
Processor 1.4 GHz Intel Core i5
RAM 4 GB 1600 MHz DDR3
Graphics Intel HD Graphics 5000 1536 MB

Notes

In OpenGL, the GL_LIGHT_MODEL_LOCAL_VIEWER flag is false by default. This means that for the specular part of the lighting, OpenGL uses (0,0,1) as the view vector, instead of the actual viewing direction (I think this is just for speed, it's physically inaccurate). If this option is not enabled, the OpenGL output doesn't exactly match the ray-tracing output. Specular highlights appear incorrect in the OpenGL output.