Building on the previous assignment, the renderer adds Lambertian shading and two-sided lighting. The material also casts shadow rays through the image, to give a simulated shadow effect. A base object class holds basic properties for subclasses to implement, which include a sphere and a plane. Another base class is for a material, which gives some basic functionality for coloring depending on the vector.
This is the default scene for Project 2 using the updated rendering
This is the same scene rendered from underneath the default plane. Although it appears bleak, it demonstrates lighting and shadows are correctly ignored and only ambient light is applied
This image was rendered using 1000 point lights to simulate soft shadows. It took over two hours to finish and shows the linear scaling of adding point lights to the scene
This image was created using only a directional light instead of two point lights. Directional lights render slightly faster than directional lights since they do not have to compute the light vector (it's saved in the directional light object), and no distances have to calculated
Time Required: ~10 hours (very approximate)
Difficulty: Easy. Lots of typing and organizing