The draw calls increase through the wall.

Hi, can you please help me?

I have increasing draw calls through the wall; something is being rendered, and I can’t figure out what it’s related to. Meanwhile, the FPS stays between 110 and 120. What commands are available to disable functions to understand what is consuming the rendering resources?

I tried profiling, but it focuses on FPS, and I still couldn’t figure it out.

RHI

Scen rendering

if you look at the floor command Stat Initviews

if you look at the wall command Stat Initviews

profiling

Hi, if you’re not using nanite for the meshes behind the wall, then you can use the console command FreezeRendering. That will freeze the culling at the current state and you can then look what actors are not culled behind that wall. As far as I know FreezeRendering will not work with nanite, since there the culling works differently.

From the looks of your images though, you don’t have more draw calls through the wall but less meshes that are frustum culled that then need to go through more costly occlusion culling. There are lots of ways to handle that depending on the specific usecase, e.g. easiest would be to use cull distance volumes for distance culling (not working with nanite meshes though). Or a bit more work would be to add trigger boxes where you hide/unhide meshes. You could also use some form of hlods where you merge meshes based on distance.

Hi, thanks for the tip. This is UE 4, and I’m not using Nanite. However, regarding culling, that really helped. The thing is, occlusion culling (which is enabled by default in the settings) doesn’t work with dynamic objects, so these objects are being loaded through the wall since they are not culled. I have a question: how can I hide these objects in another way while I can’t see them? Do you have any solutions?

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?

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).

Thank you for your help. I was hoping to rely solely on the built-in Occlusion Culling settings to achieve the desired result. I will try what you suggested (at the very least, I will enable the cull distance volume in the project).

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.