Use two-pass rendering for some shaders to reduce the cost of expensive shaders.
Implement some material animations using a shader uniform.
Eliminate use of gl_FrontFacing. It's too buggy on ATI/ Macintosh.
The main problem was using gl_FrontMaterial.ambient with a color mode
of AMBIENT_AND_DIFFUSE i.e., the fixed function path would take both the
ambient colors from the vertex color value. Also, some vertex shaders
were not writing gl_FrontColor even though the fragment shader was
accessing gl_Color.
Author: Tim Moore <timoore@redhat.com>