When I #ifdef out the fragment depth code, the spheres render on the screen as one would expect. This tells me that the fragment depth portion of the shader is not being executed correctly for some reason. The fragment depth equations are standard OpenGL and are documented in various books.