Fixed a bug caused by not normalizing a direction vector, and added in Lambertian diffuse shading.