What you canít see can hurt you
Occlusion Culling is becoming a more and more important part of complex 3D graphics rendering. Not only because we often find applications that yield higher depth-complexity, but because the scenes rendered are also more complex at the pixel level. For example, with a highly depth-complex scene and advanced pixel shaders, multiple clock cycles with extremely complex calculations and multiple texture lookups might be required for objects that are never even seen. No longer is it just a factor of rendering one or two textures on an opaque surface that doesnít exist, but it can be a matter of spending a considerable number of clock cycles on what are effectively non-existent objects.
With that in mind, this article will examine a few different implementations of hardware occlusion culling. Certainly there are a lot of software algorithms for this as well, and these can help dramatically, depending on the efficiency of the algorithm. However, at that same time there are no software algorithms presently in-use that are effective at removing all depth-complexity. Because of such, hardware occlusion culling can offer consider gains on top of software algorithms. In this article, we will consider early Z checking, hierarchical Z-buffering and deferred rendering.