Imagination PowerVR SDK Blog

Implementing occlusion culling



I was wondering to implement a mechanism to perform occlusion culling as the occlusion queries are not available in OpenGL ES 2.0. But I don’t know if it’s worth it considering the tile-based rendering architecture of PowerVR graphic chips.

Does the tile-based rendering give you enough performance to avoid occlusion culling implementation?

Will the performance turn down if a I implement an occlusion culling mechanism?

I was thinking of implementing a large scene plenty of geometry.



Yes the HW design does mean that applications do not need to spend as much time running occlusion culling algorithms.

However, even though the hardware will not run the fragment shaders for the occluded geometry, you still have the CPU expense of submitting the extra meshes (and their render states) to OGLES2, and the cost of having that geometry transformed (vertex shaders etc).

Therefore you should always perform basic gross culling, like off-screen/frustum culling.

Occlusion culling can be added as necessary. For example in a large first-person game there is no sense in rendering characters that are several rooms away and hidden by several walls if you can more easily cull them on the CPU.



And about occlusion culling techniques, what would be the one that best fits powervr architecture, if any?

Portals, Hierarchical-Z culling, Hierarchical-Z map, …