Jump to content

Vive Focus 3 low performance in UE4 build


Recommended Posts

Hello! We have encountered a performance issue with an application built with Unreal Engine 4.26.2 on Vive Focus 3. Firmware version 3.0.999.316. High performance mode is also enabled. We use Wave SDK 4.3.0. The scene in the build has a total of 60k triangles and less than 40 Draw Calls. The code is nativized. The average framerate is 30-35 fps. If we assemble a build for Quest 1/2 with similar render settings, then we get an average of 70+ and 110+ fps, respectively.

Target hardware:

-          Mobile/Tablet

-          Scalable 3D or 2D

Render settings:

-          Mobile MSAA: 2x

-          Support Software Occlusion Culling: enable

-          Forward Shading: enable

-          Instanced Stereo: disable

-          Mobile HDR: disable

-          Mobile Multi-View: enable

-          Round Robin Occlusion Queries: disable

Wave VR:

-          AMC Mode: disable

-          Enable Render Mask: enable

-          Foveated Rendering Mode: default

-          Time Warp Stabilized Mode: auto

-          Enable Adaptive Quality: enable

-          AQ Mode: Performance Oriented

Android Build:

-          Minimum SDK: 25

-          Target SDK: 30

-          Support arm64: enable

-          Support OpenGL ES3.1: enable

What could be the reason for such low performance on the Focus 3? We have tried setting the Foveated Rendering Peripheral FOV to 1. There was no performance changes.

Link to comment
Share on other sites

  • 2 weeks later...

I'm still trying to find a solution for this. I'm very new to graphics profiling, and tried using renderdoc today on a 'production' Quest 2 build vs a 'production' Focus 3 one on their respective headsets, and found that the Focus 3 took 5-6x longer to render a frame when profiled, with about the same amount of draw calls.

I also looked at Snapdragon profiler and it said that my "% shaders busy" was like 90%, so I assume it's not a memory/CPU latency issue (disclosure once again I really don't know how any of this works). My next hypothesis is that Oculus has default lesser graphics settings. I'm also going to try lowering the render resolution of the game again to see if that fixes it, as well as look at specific cache miss stats. If anyone finds any breakthroughs please post them here!

Edited by aiddun
Link to comment
Share on other sites

Its not just Unreal Engine. 

I experience the same with Unity build.

I generally get much better performance in Meta Quest 2 although hardware wise Focus 3 supposed to be a better hardware.

I really hope someone from VIVE clarify the issue.

Right now I'm just assuming software for Focus is just not mature enough compared to Quest 2.

Link to comment
Share on other sites

Same Issue in Unity as described on my end. The profiler is spiking and waiting for gpu to finish. On Quest 2 we have steady 72 fps. I even tried to lower the resolution on focus 3 build to match the resolution of the Quest 2. It's still spiking and not at all on par with the Quest 2. Scratching my head if it could do something with the Wave SDK, but yeah, no solution in sight

Link to comment
Share on other sites

  • 1 month later...

I was curious if this is due to any specific optimizations on Oculus' part, and DM'd John Carmack (consulting Oculus CTO and legendary gfx engineer) asking if they had any magic sauce in making OpenGL run faster. He responded and told me that "We don't have any meta specific code in the OpenGL ES library that I know of". This makes make even more confused on what's going on.  @Mark Moukarzel

Link to comment
Share on other sites

  • 3 weeks later...

Hello @aiddun,

Focus 3 has larger framebuffer, eye-buffer size, wider FOV, different refresh-rate so there might be a performance difference based on same content running on Quest 2. We recommend setting Pixel Density to around 0.8 (Value could change depending on content) to lower the eye-buffer size and match the resolution of Quest 2 hence increase FPS.

Recently we had optimization for Shader on our Wave SDK 4.4.0 and may gain around 5~10% GPU performance improvement. 

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

One thing to look out for if anyone's using `stat fps` or `stat unit` to check performance: I'm seeing a big performance drop if any Unreal debug text is on screen (`stat fps`, `stat unit`, Blueprint messages, etc.). (UE 4.26.2, Wave SDK 4.4.0, Focus 3 firmware 3.0.999.418).

Scenes that get 90fps with no text on screen can drop to ~70fps (looks like it's doing 11ms, 22ms, 11ms, 22ms, etc.) by having Unreal debug messages on screen - I was just assuming they'd have a negligible performance impact, but it seems they don't. Only the very lightest (GPU wise) scenes can handle having any Unreal debug text and maintain 90fps.

Also, this was a big help (as expected) - thanks for the tip:

vr.PixelDensity 0.8


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...