AutoOcclusion vs Level Streaming Volumes

What is the difference between the two settings? If Occlusion works automatically in the engine why bother placing level streaming volumes at all? Is it referenced differently in memory some how?

Thank you

Hi Jim,

I think I can assume that by “AutoOcclusion” you mean GPU-based Dynamic Occlusion (Hardware Occlusion Queries)? If so, here’s a breakdown for you.

Level Streaming Volumes are used to load in chunks of your level from a sub-level that has been setup. You would typically use these when moving through a linear path style play area. These would be loaded in behind a door that needs to be opened or around a corner. This allows you to have large parts of your level hidden and not loaded.

So you I guess you may be wondering why this matters if it’s all dynamically occluded anyway, right? It matters because you want to keep the memory usage and number of queries to a minimum for performance reasons. If you have a single level that’s only using Dynamic Occlusion queries, this means that all the mesh primitives in the level are being calculated to check whether they are visible or not. This adds additional strain to GPU. Level Streaming Volumes can help reduce this by never having these actors in this sub-level or streaming volume loaded until they are needed. This keeps the primitive count lower and the GPU queries lower, which is good for performance. Use Stat Initviews

For a further breakdown on visibility/occlusion culling here is a breakdown for least to most expensive based on method:

  • Distance Culling - (Cull Distance Volumes)
  • View Frustum Culling - (uses Camera frustum to remove non-visible actors)
  • Precomputed Visibility Volumes
  • Dynamic Occlusion

Make use of Cull Distance Volumes to help reduce mesh primitive count in addition to your streaming volumes. These help to reduce small meshes that aren’t visible until you’re closer anyway. The fewer GPU queries that have to be dynamically handled the better!

I hope this helps.

, thank you!

This was the technical answer I was looking for. I knew there was a difference but I couldn’t find it anywhere else. This knowledge base is indispensable for this exact reason. Have a great day.

If we’re going to add level streaming to the list of culling, will it place at the top or bottom?
In my mind I’d say its the same as Distance Culling but (probably) for larger areas.