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