Hi everyone,
I’m trying to optimize my Unreal Engine 5 project for lower-end PCs, and I’m currently focusing on reducing draw calls. However, I’m confused about several things and would like to understand how these systems actually work.
1. Draw Primitive Calls vs Mesh Draw Calls
When profiling my game, I see both:
- Draw Primitive Calls
- Mesh Draw Calls
What is the difference between these two metrics?
Which one should I focus on when optimizing performance?
2. Actor Merge and Draw Calls
UE5 has the Merge Actors tool that combines multiple Static Meshes into a single mesh.
My understanding is:
- Multiple Static Meshes become one Static Mesh.
- However, the material slots remain the same unless I also merge materials.
If that’s correct, does that mean the number of material draw calls stays the same?
For example:
- 10 meshes with 10 material slots total
- Merge Actors → 1 mesh with 10 material slots
Would the draw call count remain roughly the same?
3. Material Merge
I tried using Merge Materials as well, and it definitely reduces draw calls.
However, the visual quality becomes noticeably worse (blurrier textures and lower detail), so I would prefer not to merge materials if possible.
In that case, does Actor Merge alone provide any meaningful draw call reduction, or is the benefit mostly CPU-side?
4. Merge Actors vs Instanced Static Meshes (ISM)
I noticed that the Merge Actors tool offers different methods, including creating Instanced Static Meshes.
What is the practical difference between:
- Regular Merge Actors
- Instanced Static Meshes (ISM)
- Hierarchical Instanced Static Meshes (HISM)
How does each method affect draw calls and performance?
In which situations should each one be used?
5. Draw Call Targets for Low-End PCs
My goal is to support lower-end PCs as much as possible.
Are there any recommended targets for:
- Mesh Draw Calls
- Draw Primitive Calls
For example, what would be considered:
- Excellent
- Acceptable
- Too high
for a typical UE5 game?
I know the answer depends on the game, but I would appreciate some general guidelines or rules of thumb.
Thanks in advance for any explanations. I’m trying to build a solid understanding of UE5’s rendering and optimization systems.