Download

Multiple identical static meshes do not increase draw calls?

Hello. I am, for the first time, profiling my mesh assets in Unreal Engine 4.23. I did tests with static meshes, instanced static meshes and hierarchically instanced static meshes of an identical object (a tunnel). In any case, when I place them to the level I set them to ‘Stationary’.I know that placing 10 ISMs does not increase draw calls in contrast to having 10 of these non-instanced static meshes just placed on the level (they are all placed in a line formation; one below the other, but they can all be seen in front of my character).

My observations say that the draw calls for 10 of those (identical) static meshes are almost equal to the draw calls for the instanced static meshes counterparts (just 4 more draw calls), which is curious. I’ve read docs and seen tutorials on the subject, but I could be doing something wrong. I am using ‘Standalone Game’ only to profile. I tried it on my main level and on a new empty level I created just to test this, in which I placed only this mesh (and the skybox, the light source and 1 floor mesh which is set invisible). The results are the same.

I am confused. Are there new optimizations in place in the engine, with which identical static meshes don’t spend extra draw calls, as if they were instanced to begin with?

Side note: Something else I observed is that HISMs cost ~4 more draw calls than simple ISMs (exactly the same as my non-instanced meshes), but are incredibly better on the triangle count, so I guess its alright. If anybody knows on why this extra draw call cost though, kindly let us know.

Check which version introduced auto-instancing maybe…

Ok I didn’t know about that. Which is great! I’ll check it out.
I knew there must be some optimization I didn’t know about.

I believe it was 4.24 that added auto-instancing