I developped an app for Oculus Go recently, using Unity and the OVR Plugin, and now I’m trying to port it to the Oculus Quest. The Oculus Go App was a bit laggy because there was a lot of world space UI, so I found ways to make it run smoothly at 60 fps.
When developping it for the Quest, I had to recreate a matching InputManager so it could work well, and I changed OVRManager’s target device from Go to Quest.
But when I build the app, it runs at maximum 40 fps on the Quest, even though it was really smooth on the Go.
Comparing both Profilers on my PC, I can’t manage to find any difference : it looks like a lot of CPU usage is taken by EventSystem ( because of World space UI), Camera Rendering and OVRManager.Update() (which obviously can’t be too altered (the raycasting part takes the most time)).
Of course this is because my PC isn’t using all the resources of the scene since VR isn’t activated, but to my knowledge there is still no way to connect the Unity profiler to an Android Oculus device.
WOW Thank you so much, I’ve been trying to find a way to live debug Quest and Go for days ! Guess I didn’t search well enough…
This will help me a lot. Now with live debugging I can see the same pattern about Camera Rendering and Behaviour Update, but the PostLateUpdate is taking 74% of the time (XR.WaitForGPU).
This is linked to VSync of course but I disabled it in the code, using
Application.targetFramerate = -1;
Is it something deeply linked to the device that I can’t control ?
Ok the fact that my FPS were halved was due to the GPU being a bit too busy. From what I understood, disabling VSync in Unity is useless when building an app for the Quest because it does apply it anyways in the device.
Basically if a frame did not finish computing when it is supposed to be rendered, the GPU will wait for the end of the next frame to render, which, in fact, renders 1 frame out of 2 if it happens continuously.
So I used the OVR Performance Lint Tool to see what was taking time on my GPU and fixed what needed to be fixed. Now I have a smooth 90 fps build.
Quite surprised that VSync would litteraly cut my framerate in 2, but hey, that’s how it works I guess.
Hope this helps if someone has a similar issue.
A bunch of Quality Settings that were not adapted to Android basically, such as texture compression format or realtime global illumination.
I actually just looked at the OVR Performance Lint Tool. If the OVR plugin is imported you can access it in Oculus > Tools > OVR Performance Lint Tool, and it will suggest changes that might improve CPU/GPU in VR.