Hello Rendering Gurus. Can you please advise me the best Console Command Stat(s) to use to view Skeletal Mesh Merge with FSkeletalMeshMerge Draw Call Performance? I’m currently using ‘Stat SceneRendering’ and ‘Stat RHI’ monitoring ‘Mesh Draw Call’ and ‘Primitive Draw Call’. From what I see, the Draw Calls increment identical to separate skeletal mesh components added. Not sure if these metrics are the correct ones to use, or the skeletal mesh merge is not working. I suspect the skeletal mesh merge is not working Any and All assistance is greatly appreciated, Thanks in advance. [TABLE]
Wouldn’t merging 2 pieces remove the adjacent tris? Meaning you remove a few poligons per piece merged and therefore increase performance? (Insignificantly, because it’s like 10 to 20 tris total per merge on a good model)
I dont know if the skeletal mesh merge code works that way. I can see draw calls drop, but the polygon count stays the same and fps stays the same. Ill try to post a video later.
Here’s the video I promised. I rewrote the plugin code and changed up my method of benchmarking. I dont see code that removes the adjacent tris. Supposedly, the reduction is in the number of draw calls by merging multiple meshes into a single batch, minimizing state changes needed to draw each object. Reduces CPU cost. LOD is also taken into consideration. But, I dont see that behavior with the stats I’m looking at. Interesting enough, when using meshmerge I see draw calls/triangles drawn and FPS increases. When using separate mesh components. the opposite occurs draw calls/triangles drawn and FPS decrease.
The result: There IS a FPS performance boost when merging, but, its only noticeable if the using the same material. So the use of a Texture Atlas appears justified. I dont understand whats going on with the stats.
[TABLE]
I would zip this up and submit a bug report, at worse they tell you it’s no bug, but at least you’ll get an answer direct from the devs of the engine.
Obviously the really low FPS is more due to the skeletal meshes then it is to the mesh-merge stuff, but the opposite stat reading is really odd.
With a large number of skeletal meshes, you can easily be cpu bound due to pose evaluation. There are several different approaches to optimize skeleton evaluation - eg **Multi Threaded Animation Update and the **FastPath, URO, etc… see Animation Optimization | Unreal Engine Documentation
Use Stat Unit to figure out if you are Render ,Draw, or CPU bound.
Render might mean draw less polys.
Draw might mean reduce draw calls.
CPU might mean too many skeletons.
If the separate mesh components use different materials, you’ll get no draw call reduction at all because each different material still needs a separate draw call.