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.
gl_FrontFacing isn't well supported on some Macintosh / ATI combinations.
Please Note: There is a problem with this implementation when the light cone crosses the near/far camera boundary.