Just checking whether I got this right...
Pixel shading (or texturing and blending for the fixed-function pipeline) can be skipped when the depth test fails and alpha testing is off. In other words as soon as alpha testing is turned off, early-out depth tests can be used. Then it only has to update the stencil buffer (when active) and it's finished.
I'm just a tiny bit confused about the order of operations and their dependencies in a modern graphics pipeline. There's stencil testing, depth testing, alpha testing, the texture and blend stages (or the pixel shader), alpha blending, writing the depth value, the color value, updating the stencil when passed, not passed, passed but depth test failed...
Is there anywhere I can find a nice overview of this? I found the old Radeon pipeline, but it doesn't go into the details and doesn't feature any early-out mechanism or parallel processing. I'm sure I can figure it out myself just fine after a bit of sleep, but any clear resources would still be highly appreciated. I'm trying to work very analytical instead of using the test-and-compare approach...
Pixel shading (or texturing and blending for the fixed-function pipeline) can be skipped when the depth test fails and alpha testing is off. In other words as soon as alpha testing is turned off, early-out depth tests can be used. Then it only has to update the stencil buffer (when active) and it's finished.
I'm just a tiny bit confused about the order of operations and their dependencies in a modern graphics pipeline. There's stencil testing, depth testing, alpha testing, the texture and blend stages (or the pixel shader), alpha blending, writing the depth value, the color value, updating the stencil when passed, not passed, passed but depth test failed...
Is there anywhere I can find a nice overview of this? I found the old Radeon pipeline, but it doesn't go into the details and doesn't feature any early-out mechanism or parallel processing. I'm sure I can figure it out myself just fine after a bit of sleep, but any clear resources would still be highly appreciated. I'm trying to work very analytical instead of using the test-and-compare approach...