Meta Quest 3 APK with UE 5.5.3 triples drawcalls when not up close to meshes, compared to UE 5.4.4

Hi!

I’m in the process of migrating a VR project (based on the VRTemplate) from UE 5.4.4 to UE 5.5.3, and am struggling with a significant performance degradation when deployed on Meta Quest 3.

To narrow it down, I’ve created a simple test level from the VRTemplate level, basically removing everything except the walls and floors. Here I’ve added 100 Grabbable_SmallCubes, disabled physics on them, and checked the results on both a UE 5.4.4 APK and UE 5.5.3 APK deployed to a Meta Quest 3.

  • On the UE 5.4.4 version, it takes a consistent 110-111 drawcalls to render the scene, no matter if you’re far away from the cubes, or up close - this works fine
  • On the UE 5.5.3 version, it takes 308 drawcalls to render the scene when you’re not up close to the cubes, and 108 drawcalls when you’re up close (less than 1m I guess) - this is problematic

This video demonstrates the observations with the OVR-overlay and ‘stat unit’ activated: https://www.youtube.com/watch?v=QKCxobqs0mY

I’ve tried adjusting many project/world/mesh settings, added the Meta Unreal Engine 5 Integration 72.0.1, but nothing seems to prevent this strange behavior.

I’m wondering if anyone has observed similar behavior, and more importantly, knows the cause/reason of this, and how to fix/prevent it.

I’d be happy to share any project settings/details/… if it helps.

Thank you!

Cheers,
Thijs

I cannot edit the original post, so here is an additional note:

This behavior is identical for a vanilla VRTemplate project in UE 5.5.3 (create a new VRTemplate project, adjust the level to remove everything except floor/walls, add the 100 cubes, add stat-unit-console-command to VRPawn Event BeginPlay, create APK and deploy to Quest3).

Also including the video embedded instead of just a link:

1 Like

After another attempt I’ve now figured out a configuration that seems to work and ‘solves’ the problem with the triple draw-calls at a distance.

These are (as far as I can see) the important settings in Project Settings -> Engine - Rendering for having acceptable performance for a Meta Quest 3 APK based on UE 5.5.3:

  • Enable GPUScene on Mobile must be off
    • when this is turned on, there is a slight performance degradation and it causes rendering artifacts at the far right side of the view, especially when turning the camera to the right, as if meshes are unculled a bit too late, so they pop in view
  • Mobile Ambient Occlusion must be off
    • when this is turned on, the number of draw-calls is increased and the performance suffers
  • Occlusion Culling must be off
    • when this is turned on, the number of draw-calls is increased and the performance suffers

In addition, the work-around for Widgets not updating in UE 5.5 was also necessary (not related to draw calls but otherwise menus and other widgets don’t work): Widget Component not redrawing in 5.5.0

2 Likes

I’ve had these off for many engine versions now because frankly they eat up more performance than they generally save. I opt for larger triangles, fused meshes, and a handful of master materials + instances. This is pretty nice for many parts of development too. You just have to be on top of knowing exactly what your triangle / draw call limit is and making sure you have enough budget for dynamic elements.