This picture shows refraction, my procedural solid wood texture, and a bump-mapped floor. Notice how flat the distant parts of the floor look; that's because it has nothing to reflect.


In this picture we have diffuse reflections on a steel ball; a brightly lit, motion-blurred pool ball, and area lights (which creates soft shadows). Please note the ray tracing cliché of a reflective sphere on a checkered floor.


I changed the refraction formula to what I hope is a more realistic one. I also made light not reflect when it hits the inside surface of a sphere. This picture shows an early version of my global environment mapping routine; the floor and spheres reflect a photo that's "wrapped" around the scene. Unfortunately, I messed with the specular lights, so the specular highlight on the pool ball doesn't look as it should.


The same low-polygon count wine glass rendered with and without phong shading. Phong shading is a method for creating smoother surfaces by interpolating the vertex normal vectors across the surfaces. I found it was much harder to implement in a ray tracer than it would have been in a conventional 3-d renderer, that draws one polygon at a time.


This picture shows how light reflects off a flat surface and a phong-shaded surface. It also illustrates a problem with phong shading: if the light hits the polygon at a steep angle, sometimes the angle between the normal vector (marked "N") and the light ray will be more than 90 degrees, so the ray tracer thinks the light hit the back of the polygon instead of the front, thus messing up the lighting and reflections. There doesn't seem to be any good way to fix this.