Blinn Phong Shading: Theory and Implementation [Shaders Monthly #4]