So I recently began doing clean up and optimization in scenes. Implementing LODs was part of this. Everything was going fine until I got to a level with lots of foliage. When I added LODs my performance actually got worse.
Mesh draw calls went from 1674 to 3534.
RenderViewFamily went from 6ms to 15ms.
FPS dropped from 60 to 47.
Am I missing something here? I saw improvements in every other level when I implemented LODs. Any help would be greatly appreciated.
Need more info on what exactly you did.
I went through all the assets in the scene and generated 2 LODs for each asset, on top of the base mesh. So I now have LOD0, LOD1, and LOD2. I set all the values for reduction and screen size myself to be as aggressive as possible without losing visuals. I can use the Level of Detail Colorization to confirm they are working. That is essentially all I did. This worked great in other levels in the project. The only difference in this level versus all the others is the foliage was placed using an asset called Procedural Landscape Ecosystem.
Well, normally the heaviest thing is the grass. I would check that you LODd the grass properly first. It’s also one of the hardest things to LOD Size accurately.
The other thing I can think of is that the LODs are ignoring Occlusion.
Maybe your occlusion bounds were changed with the different LODs in place causing more objects to actually be rendered.
Especially considering your drawcalls tripled.
You can use Freeze Rendering to test the occlusion.
Just force LOD0 and see what you get / if you get back to the previous numbers. Then remove the force lod and freeze rendering with the scene as it was to get an idea of what’s changing.