Okay, I was just wondering.
For the first release of my engine, I think I want to stay away from GLSL, due to the incompatibility problems. I’m very disappointed with how shaders have been implemented, for the following reasons:
-Shaders get run on the CPU on older hardware, which is unusably slow, with no reliable way to tell the program this has happened. All the users knows is that the program runs at 2 FPS.
-The number of instructions required just to emulate the fixed function pipeline exceeds the instruction limit on older hardware.
-ATI cards sometimes cause crashes with no explanation.
-Inconsistencies in the API: some cards ignore built-in variables, ATI doesn’t support for-next statements, NVidia ignores clip planes but ATI doesn’t.
-10-30% reduction in framerate, just by using a shader that does the same thing as the FFP.
-Added complexity. If ATI and Nvidia couldn’t even release drivers without a few bugs now and then with a fixed-function pipeline, they’re really going to have a lot of bugs when they are trying to release drivers for a programmable pipeline.
The whole concept of relying on shaders seems wrong to me. I mean, they are great for a few things you wouldn’t be able to do otherwise, but it seems to me that a fixed function pipeline that can handle bumpmapping and a few other features properly would be faster, more reliable, and easier to use. I’m going to have to rely on them, since there is no alternative right now, but I think eventually we’ll see a return to a fixed-function pipelines with more features. And then the marketing will say “look, the features are built right into the hardware, for ultra-fast processing!”.