Download

Help a dumb fireman refine his understanding of Culling

Please see attached link for context as I was trying to optimize my VR simulator and ran into problems.

I’ve been reading Tim Hobson’s pages on Culling and I have been watching the Epic livestream - particularly the one on Robo Recall’s optimization was useful.

Long story short, for testing purposes I had a scene that was basically stuck at 22 m/s to 30 m/s. This was on a large map with other problems but everyone commented on how the scene wasn’t that complex. Compounded on this was that as I slowly deleted various elements, the performance did not improve largely. (I would look straight at the ground and hardly see any performance increases.) My GPU profile helped me fix some lighting/translucency issues but ultimately I was stuck on the Basepass.

So to test, I put a distance culling volume down on the entire map and used some high values, all objects up to a size of 9999999, and a distance of 5000.

Performance **skyrocketed **when I did this. I was instantly getting 11 m/s and it ran smoothly at 90 fps m/s. I can obviously tweak the objects and distances and there’s a lot more I need to learn about fixing LOD’s, merging actors, changing light settings. My game thread was about 3.0 m/s but my Draw and GPU were around 22.30 for the most part. Note - I didn’t appear to be pixel bound as reducing resolution by one half did not give me much performance increase. Also of (also disabled interweaving on Steam VR helped) But what I still don’t understand is what was causing a complete lack of culling, for example of things BEHIND me. I would test and delete EVERYTHING within a 140 FOV in front of me. But I would still not see a huge performance until I essentially removed everything, even the things behind me. I tried playing with the rendering settings (I had forward rendering on) ambient occlusion was off. I used that one cvar that shows the primitive occlusion happening and it seemed to be working, a lot of green boxes.

So, I understand I need to set up culling distances on a bunch of objects (these were assets that DO have setup LOD’s AFAIK however). But why is the game rendering things that are outside my render frustum? I could understand on the borders of my fov but I swear this thing is rendering things BEHIND ME. Why is that happening? I was certain I set the World Occlusion setting and I tried playing with some cvars but I must have not chosen the correct one.

Feel free to ask any basic questions as maybe something slipped through the cracks and if there are any other resources I might look at I would appreciate. I’ve looked at tech aid art’s optimization primer and the best rendering practices and optimization livestreams.

I read through those which is why I mentioned them in my first post. I’ve attached some new images and am trying to understand more. My only guess at this ponit is that those windows have translucency and which means a sliver of rendering gets through. PLEASE correct me if I am wrong but, if a single part of a static mesh or spline is rendered, then the ENTIRE thing is rendered? Is that what my problem is? The reason why I say that is I have a lot of merged actors which maybe I should revert to their original static mesh components. (Is there a way to do this without them being in BP’s, because whenever I have a BP of a building it makes a lot more drawcalls)