Improvning specular surfaces

Specular highlights:

Specular highlights could be added to the specular surfaces. This wouldn't make much sense in the Cornell room since it consists of only plane surfaces, but if round shapes were added it would add realism. One way to add specular highlights is to use Phongs reflection model[1]. It works by letting rays sent from the light source to be reflected in the specular surfaces.
In the reflection points hit by both the light sources rays and the camera rays the absolute value of the dot product is taken between these. The product is then taken to a power. This leaves those points where the reflected light ray and camera ray is close to facing the same direction.

Refractive surfaces:

Refractions are similar to reflections. It would be pretty straight forward to implement refractive surfaces into the ray tracer. To implement this an incoming ray with angle α towards the normal has a refracted ray with angle β towards the negative of the normal where sin(α)/sin(β) is the materials refractive index.[2]

[1] Bui Phong, University of Utah, Illumination for computer generated pictures,
http://www.cs.northwestern.edu/~ago820/cs395/Papers/Phong_1975.pdf

[2]  Christopher Peters, KTH Royal Institute of Technology, Introduction to computer graphics and interaction Raytracing,
https://www.kth.se/social/files/55142a41f276542e889f1e74/DH2323%20DGI15%20Raytracing.pdf