Draw calls and LODs?

Hey all.
I finally have a silly question (that normally I would go and test, but it popped into my mind while away from the PC for once).

I have this new super duper custom palm tree model I just hand carved.
I created the base sculpt with an insane amount of vertices so that I can bake it down into a less expensive version - as usual really, nothing extreme or unusual.

I’m wondering if - assuming I do use the really high poly count model as LOD0 - the LOD1 having a different material ends up costing me an extra draw call at all times, or if the extra drawcall doesn’t even matter because the LOD system already generating a draw call when triggering (which it has to, since it is rendering something essentially “new”).

it would still be just 1 material per mesh/lod (instead of the trees you usually see that have 2 or 3 different materials as a base or for the fronds).
having reached 90fps on a final scene with grass at 4K it probably won’t impact my performance either way, but I am rather curious on if anyone know an answer. If not I’ll end up testing it tomorrow…

I’m not really sure but from my understaning draw calls represent all the models, materials etc… you can actually see on the screen from your camera perspective.
Not sure how LOD’s are handled in detail but it woud make no sense to have all LOD meshes and materials load up into your camera view at once, models with like
4 or even 5 LOD’s would end up producing a ton of draw calls which would be the opposite of saving resources and thats why we use LODs right.

I would say the olny draw calls that are produced, are the ones that you are using for the current model that is drawn in your scene. However it should be very easy to test, throw your models into a scene without LOD’s, check the draw calls, than import all your LODS and check again.

I’m curious what was learned here. Did you try the test and come to a conclusion?

I’m building a simple VR game for Quest where the number of draw calls has a large impact on perf, and I want to have a lot of the same enemy. I added three LODs and have it set up so that the lowest quality LOD has half the number of triangles as the original. But I did not notice an obvious perf win. I’m wondering if UE4 may be handling all of my enemies in a single draw call when I had only the single LOD, and now it may be handling all of my enemies with four draw calls.

I have a practical test level where my spawn manager continuously spawns enemies until I start dropping frames. Both with and without the LODs I get to around 60, but with the LODs for some reason even an enemy right in my face will sometimes get chosen to not be the best quality. So I reverted the addition of more LODs because why would I want to trade off visual fidelity with no perf win? Well, maybe once I start becoming more GPU bottle necked I’ll find that the LODs give me some GPU perf back? Maybe? I’m CPU bottlenecked now, and I’ve primarily been concerned with the CPU cost of each draw call (thus, trying to minimize the number of them when possible).

For LODs, manually set what screen radius it should appear at, also yes LODs do add draw calls, but not many.

1 Like