Trying to understand draw calls and Actor Merge optimization in UE5

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.

1: Mesh Draws are specifically draws due to mesh or skel mesh. 1 mesh with 3 materials will be 3 mesh draws. Primitive calls are all the batches set to the RHI for rendering, including the mesh draws, lighting and shadowing, virtual textures, etc. Both metrics are important. What is most important is doing Unreal Insights captures (esp on your target hardware) to see where your time is being spent… otherwise you might spend a lot of time optimizing something that makes little difference.

2: if you merge 10 static meshes with 10 material slots each into one (assuming the slots are the same), that will go from 100 mesh calls down to 10 mesh calls( one for each material).

3: If you merge materials, i would do it by hand case by case. It may be worth it? depends where your bottleneck is.

4: Merged actors will perform better than ISMs. The big thing to think about when merging actors is culling… you want to allow your meshes to cull when they go out of view, but if you merge a bunch into one big actor the entire thing will always draw. You have to plan it out, but merging your actors can give big benefits, esp on low end/mobile. ISMs are better than a lot of meshes, although if only a for a few, it makes little difference. HISMs are great if you are generating LODs. Be aggresive in distance culling for ISMs for big gains.

5: I’ve been doing a lot of VR/quest development lately (moblie snapdragon chipset). My target for mesh calls is about 250, max 400, prim calls is about 400/500. For low end PC with integrated GPU I would go max 1000 for mesh calls, 2000 for prim calls. Lesser is better, if you’re aiming for that target you really have to think about it constantly when building your game.