The draw calls increase through the wall.

Hi, they are getting culled, whether their mobility is set to static or dynamic (just tested in ue4.27 just to be sure :slight_smile: ). Maybe two things:

(1) In your third and fourth image, there are about the same number of objects getting rendered (Visible static mesh elements plus Visible dynamic primitives). What differs is the amount of objects that need to go through the dynamic occlusion culling, that number is a lot higher in the fourth image. They are getting culled though.

The occlusion culling goes through several steps (cheapest first): (1) Distance culling (not used by default, you need to use cull distance volumes for that. Generally I would always make use of that since its cheap and easy to setup). (2) Frustum culling, (3) Precomputed visibilty (also not used by default, I think that is only for small levels with static lightning, never used that), (4) Dynamic occlusion. You can also see those here in the docs: Visibility and Occlusion Culling in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community is the same for ue4. And here is the doc page for cull distance volumes: Cull Distance Volumes in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community

I removed all dynamic (blueprint) objects from the scene, but the question still remains: why does Frustum Culling not discard all objects behind the wall? Are there any settings for it?

Since the objects behind the wall are inside the view frustum, they cannot be culled in that second step and will need to go into the fourth step which is more costly. To cull those earlier, you can use cull distance volumes and distance cull them.


(2) If the question is how to completely load/unload them, then as far as I know that is only possible using level streaming and likely needs to be controlled manually using blueprints (never used it, so don’t know exactly).