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
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.
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:
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
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.