Merge actor vs instanced static performance

Hello everyone.

I’m having some hard time of understanding how merging actors together and using instances works in different conditions. So I would like have some answers:

Okay, so lets say that I have build a whole house with modular assets. There are about 30 different kind of pieces and all of them have one material. So, the complete building now have for example 1200 pieces in it.

  1. Does that means that the draw calls will be 1200 if I don’t merge or make those assets to instanced meshes?

  2. If I merge all of those assets with “merge actors” tool, will the draw calls decrease to 30?

  3. If I change those modular models to instanced static meshes or hierarchically instanced static meshes, will the draw call drop to 30 (as there is only 30 different materials that all are same)?

  4. Is instanced/HISMC better than merging actors if there is only like 30 different assets that are repeated like 40 time each?

  5. Okay, so lets think that I now add a vertex color to some of my material, so it will change the roughness based on how I have painted those assets. So there would be like a 40 models of roof tile and only 5 of them have been painted so it would look like there is a puddle. So, If I paint to some models, will they now require extra draw calls after I have merged all my models? If that is true, will all differently painted material require extra draw call?

  6. Is there some other aspects that I should take notice rather than draw calls when developing buildings from modular assets?

Since you probably solved this old thread by now I’ll just answer one point:
. “2 If I merge all of those assets with “merge actors” tool, will the draw calls decrease to 30?”
merge actor will give you just 1 mesh draw call (assuming they all either already share the same material, or that you merge materials as well). HISMC on the other hand would get you down to 30.

Thank you for you reply.

However, all of those pieces have own material. So am I correct, that if I decline the “merge materials” option, there will then be 30 different draw calls? And like you said, if it is enabled, there is only one?

I would say that the only reason to decline ‘merge materials’ is if they are already using just 1 or only a few materials. If all of them or almost all of them have unique materials (and you don’t want to merge for various reasons), I would say that then ‘merge actors’ is pointless. You would be losing the drawcall benefit of merge actors, yet pay the price for the downsides of ‘merge actors’ (such as severly reduced flexibility and occlusion).

I tend to recommend making enourmous texture atlases using the Render to Texture function in 3ds max, that way each object CAN share the same material. Sure you could do similar with merge-materials but then you’d be making a new texture atlas for each thing you merge toghether which isn’t what you want.

This thread seems to be helpful on the topic: Creating Cities with Interiors, Static Mesh vs. HISMs ? - #3 by CoquiGames

It seems that HISMs work well when you want to cull individual actors from the cluster, whereas merge actors uses the whole mesh as it’s treated as one mesh.

The other difference about HISMs is that the static mesh has to be exactly the same–shared across the instances–otherwise, it won’t even allow creation with the merge actors tool. Even having a different material applied to the same mesh will not allow instancing. Negative scale cannot also be inconsistently applied to one of the actors. In those cases, using merged actors is mandatory.

Otherwise, from my own personal tests, HISMs seem to create less draw calls while slightly increasing the tris. That is the best setup–especially if they are able to effectively take advantage of PCV and cull distance volumes.