PBF: Occlusion Culling and General Lighting Review with Q&A [Tim Hobson]

By Occlusion Volume, this is really just a Cull Distance Volume in UE4. YES, they absolutely can benefit from using them in their games, whether it’s for PC/Console/Mobile!

For Mobile, Precomputed Visibility Volumes are best since dynamic occlusion is not used. Precomputed Visibility Volumes, much like a Lightmass Importance Volume are used to encompass your playable areas and will create a grid that checks if an objects bounds are within its cell. if it is and it’s not occluded from the camera view it will be rendered.

Cull Distance Volumes, allow you to set up several sizes for objects and anything within the volume that meets the criteria will be culled at the specified distance. You can use these in conjunction with the Dynamic Occlusion that is already on by default in the engine and they can be used with Precomputed Visibility Volumes as well. There may be times where you don’t want an object to cull to which you can just just disable bAllowCullDistanceVolume in the Detail’s panel for the selected object.

So as far as open world games go, it’s best to use large occluders where possible. This can be as simple as a large building near the player that blocks parts of the background scene, or mountains and cliffs that keep the player from seeing for great draw distances. You may think this odd seeing Epic released the Kite Demo and has these huge draw distances. The method there is possible, but you’ll notice it also recommends using a very powerful system. Even Still the grass and trees use extensive LODs to reduce poly count, along with culling by distance for the ground foliage near the player. Keeping the draw calls to a minimum is best here and profiling can really help. For more densely packed areas I would use more cull distance volumes to help offset where the dynamic occlusion system in UE4 is not already helping out.

I don’t know if that specifically answers your question 100%, as there are more things to check when hitting performance bottle necks. Things like Cull Distance Volumes, Precomputed Visibility, and any other performance optimizations would come as I’m building out my levels/games and running into issues. If I start seeing problems with performance, I would start using these more heavily to get my draw calls back down. It’s not something you really start out by placing in your level first and then building around it, at least not for me.

Right now, there isn’t much documentation in UE4’s docs about Cull Distance Volumes, but the old UE3/UDK documentation is still correct on setting up and using these.

UE4 doc: Volume Actors in Unreal Engine | Unreal Engine 5.3 Documentation

UE3/UDK doc: UDK | VisibilityCulling Distance Volumes

Something to keep in mind when using Cull Distance Volumes.

  • They can only use static objects, so it won’t cull any movable objects.
  • The culling will not be visible in the editor. I would suggest just hitting the “G” key to switch to game view to quickly test it working.

If there are more questions or I’ve not been clear enough, feel free to let me know. I can always try and put together some examples or attempt to use my words better. :slight_smile: