Forum Discussion
Krakentanz
4 years agoExplorer
No performance gain with FFR - how is that possible?
Hey there,
I'm using Unity (2021.1.28f1, URP 11.0.0) to build (Vulkan, Multi-Pass) for Quest 2.
I'm desperately trying to get more perfromance for the application I'm making, as it's not reaching a constant 72 fps, but am stuck around 60 fps. I switched to Vulkan to be able to use Fixed Foveated Rendering and was hoping to thus gain the ~20% framerate increase I need. Unfortunately even though I'm GPU bound, activating FFR does nothing in terms of framerate, it just leads to a (barely noticeable) reduction in visual fidelity. Even at the highest level 4, I do not notice any speed-up, yet according to the Oculus Quest documentation the device should only have to render less than half the pixels! In terms of performance, his should be equivalent to reducing the camera's render target scale quite a bit, which, as I tried (reducing from 1 to 0.9) leads to the desired framerate of 72 fps.
Now, I wonder: what is FFR really doing? The graphics in the docs indicate that only 46% of pixels (I counted!) need to be rendered on FFR set to "High Top", so how can that not lead to a massive improvement in perfromance?
Thankful for any information on how and when to use FFR.
Cheers!
5 Replies
- pro_zacMeta Employee
FFR will definitely improve performance, but it may not be improving enough to get your app over the 72 fps threshold. You can check your frame timing by running "logcat | grep FPS" and looking at the "CPU&GPU" time. For my test app this goes down about 2-2.5ms when switching from FFR 0 to FFR 3.
If you are looking for bigger gains, you may be interested in Application SpaceWarp (ASW).
- toscofishHonored Guest
Multi-pass? Are you sure? I'd recommend to use Multiview instead.
As for FFR, it simply degrades the rendering on the outer tiles, but it is not very visible on the Quest 2 (on the "vanilla" Quest is very noticeable), in order to see it you have to focus your eyes on the lens borders.
OR you can configure the OVR Metrics Tool to show the FOV level on a graph. - enoch.bradshawHonored Guest
I am also running into this issue. I have a unity scene with this raymarcher asset and I want to see if FFR can help the FPS enough that this asset can be used for production. I tried with FFR off and then with FFR at HighTop and in both instances the frame rate is around 10 fps. It is barely noticeable, but I can see a slight visual difference and I am using OVRMetricsTool that verifies that FOV is at 4. I am also unsure why this would not have a boost in performance?
I am using Unity2021.2, Standard Render pipeline and all other defaults save for the oculus required settings.- toscofishHonored Guest
Weird.
But truth to be told, we're using Unity 2021.2 and I'm struggling to see the usual FFR artifacts, I suspect something is broken. Can you try it on a previous Unity version? FFR saved our asses on our previous project (our bullet hell shooter YUKI :D).
Now... Raymarching on mobile VR? That's something I'd like to see working..
- ariel0correaExplorer
Hello, Unity developer here, I know this is old, but hopefully this can be useful for someone. FFR will greatly help if your scene\app is fill bound on performance (basically means at the fragment shader stage, where the gpu calculates the color of the pixels to fill the screen, shaders that uses depth buffer like water shaders for example, could benefit from it). If your problem is on the vertex shader stage (generally caused by too many polygons per frame) it might actually have an negative impact in performance. (source: self experience and https://developer.oculus.com/documentation/native/android/mobile-ffr/?locale=pt_BR#foveation-example-images).
That said, I actually had issues on a project trying to enable FFR, in my case I am using Unity with URP and I am changing the renderer settings based on the scene that is loaded and changing the resolution seems to mess with FFR, it ends up resetting to level 0 everytime.
Related to not being able to see the difference on screen: The best way to know if FFR is enabled or not (that I know of), is using Oculus OVR Metrics app. It will give you a lot of useful data at runtime of any app running on the oculus. It is really a must have tool if you want to debug your app. That said, also, if you are using Vulkan, you can enable Subsampled Layout, which diminishes FFR artifacts (it may have a performance impact though). (source: About the Oculus XR Plugin | Oculus XR Plugin | 2.0.0-preview.5 (unity3d.com)).
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 5 years ago
- 5 months ago