I have some questions about reducing character render calls in a server based game.
If there are 1000’s of characters on screen and the characters are made of many separate components like: hats, glasses, heads, torsos, backpacks, legs and shoes, is it better to keep the characters as separate components? Or, is it better to combine the separate components into one mesh using C++ function **FSkeletalMeshMerge? **
If all the components are separate, that could be a lot of render calls including the separate materials that accompany the geometry. For example, if each avatar is composed of 3 components (head, torso, and legs) and we have 50 avatars on screen, then we will have 150 render calls. Since we know we will also have hats, glasses, facial hair, other facial components, backpacks, bracelets, and shoes, we can see how the render calls can add up; and that is just geometry. Not mentioning materials.
Some components will have morph targets. If FSkeletalMeshMerge is used, there would be one mesh and one shared material with one atlas texture. I read there is a way to also get morph targets working with the mesh bake down using **FMorphTargetDelta.
Here are the questions:**
So, if you have 1000’s of characters in a server based game and you want to keep render calls down, should **FSkeletalMeshMerge **be used to combine all the components (with morphs) into 1 mesh, 1 material, and 1 atlas texture to reduce render calls?
Or, are there new tools in 4.22 that would allow me to keep the avatars as separate components (with morphs)? Are there tools that batch similar skeletal meshes and similar materials to reduce the render calls?