I noticed in the rendering pipe, all of the fragment operations (programs, etc.) happen after tesselation in the rendering pipe, with a whole mass of other time consuming operations before any testing, stenciling, depth buffer testing, any of that.
Wouldn’t it be wise to throw out all texture operations, fragment program calls, and all that if the pixel isn’t going to be drawn anyways? The specification seems pretty ridgid in saying that all of the tests happen AFTER all of the texture lookups and so forth. Please, change that. Those tests should happen before any expensive pixel ops.
Look again at the pipeline spec. It does say that it is a logical order of operations and that implementations are free to re-arrange as long as the result is the same.
Modern cards like Radeon 9500+ and Geforce FX do early z-testing and throw away fragments that are not rendered early in the pipeline. (But if you fragment program alters the z-value, early z-test is disabled)
[This message has been edited by sqrt[-1] (edited 08-04-2003).]
The OpenGL pipeline description is a description of how the hardware should look like it’s doing. There’s room to rearrange operations, if it will enhance speed without changing the resulting output.