Dynamic occlusion is expensive to put it lightly. These occlusion tests need to be sent to the GPU and then read back. The limitation of a lot of mobile devices is their capabilities to have a powerful GPU.
As far as Visibility and Occlusion culling goes this is the order they are considered from cheapest to most expensive:
- Distance based (Per instance setting and Cull Distance Volumes)
- View Frustum Culling
- Precomputed (Precomputed Visibility Volumes)
- Hardware Occlusion Queries (Dynamic occlusion)
As mobile devices become more powerful it may be possible for this to change. Even with dynamic occlusion as an option, it is always recommended to still use Cull Distance Volumes and Precomputed Visibility Volumes to reduce the need for the queries to be sent to the GPU. This is where a lot of performance loss can bottleneck by having so many actors to check their visibility state.
The only thing that makes Precomputed Visibility a bit more expensive is that it is precomputed and needs to store the information. The larger the are you’re using precomputed visibility volumes to cover and the smaller the cell placement size the more the stored information will cost to decompress when being used.
Just to revisit and clarify, that Occlusion Culling is not removed from Mobile. There is just an alternative development process that gives all the options as before, just without dynamic occlusion queries. It put’s the optimization in the developer’s hands to keep in check, which everyone should do regardless.
There is documentation currently being worked on for Visibility Culling, Cull Distance Volumes, and Precomputed Visibility Volumes. The information on the UE3 pages is still fairly relevant, though.
https://udn.epicgames.com/Three/VisibilityCulling.html
I hope this helps!
Tim