Skip to main content
New Participant
April 25, 2022
Solved

Fixed Foveated Rendering Gets Set To Zero Oculus Quest 2

  • April 25, 2022
  • 3 replies
  • 3959 views

Hello, 

I am having a strange issue where the fixed foveated rendering level gets set to zero after the power button on the headset is pressed twice on the oculus quest, nothing I do after that changes the level. 
When the game is launched OVRManager.fixedFoveatedRenderingLevel = OVRManager.FixedFoveatedRenderingLevel.Medium; manages to set the level correctly, however after pressing the power button, the line does nothing. No error messages or anything of the sort either. 

Has anyone experienced or is experiencing this issue? 

This topic has been closed for replies.
Best answer by synodicarcmichael

This was an annoying thing to fix. It seems that fixed foveated rendering gets reset to 0 every time you put the headset back on like you said. However, even if you set the value back to where it was before, it doesn't change. This seems to be due to a badly cached/de-synced value that refuses to update if you set the FFR back to the same value it was. So, what you ACTUALLY have to do is, set the FFR to your old value + 1, then set it to that value - 1 to get back to where you were at.

 

I'm working in Unity, so I've been running this code in a function every time I put the headset back on (the input focus acquired event) with this binding:
OVRManager.InputFocusAcquired += InputFocusAquired;

 

My code in that function looks roughly like this:

int FixedFoveatedRenderingLevel = GameUserSettings.GetIntegerValue("FFRLevel") + 1; //set to +1 for hacky solution for now
OVRManager.FixedFoveatedRenderingLevel FFR = (OVRManager.FixedFoveatedRenderingLevel)FixedFoveatedRenderingLevel;
OVRManager.fixedFoveatedRenderingLevel = FFR;

int FixedFoveatedRenderingLevel2 = GameUserSettings.GetIntegerValue("FFRLevel");
OVRManager.FixedFoveatedRenderingLevel FFR2 = (OVRManager.FixedFoveatedRenderingLevel)FixedFoveatedRenderingLevel2;
OVRManager.fixedFoveatedRenderingLevel = FFR2;

 

Let's hope this gets resolved soon, it would be nice to not have to do this!

3 replies

New Participant
April 26, 2022

Anyone have any thoughts? This is dropping my game's fps from 72 to around 58 T_T. 

 

New Participant
April 27, 2022

This was an annoying thing to fix. It seems that fixed foveated rendering gets reset to 0 every time you put the headset back on like you said. However, even if you set the value back to where it was before, it doesn't change. This seems to be due to a badly cached/de-synced value that refuses to update if you set the FFR back to the same value it was. So, what you ACTUALLY have to do is, set the FFR to your old value + 1, then set it to that value - 1 to get back to where you were at.

 

I'm working in Unity, so I've been running this code in a function every time I put the headset back on (the input focus acquired event) with this binding:
OVRManager.InputFocusAcquired += InputFocusAquired;

 

My code in that function looks roughly like this:

int FixedFoveatedRenderingLevel = GameUserSettings.GetIntegerValue("FFRLevel") + 1; //set to +1 for hacky solution for now
OVRManager.FixedFoveatedRenderingLevel FFR = (OVRManager.FixedFoveatedRenderingLevel)FixedFoveatedRenderingLevel;
OVRManager.fixedFoveatedRenderingLevel = FFR;

int FixedFoveatedRenderingLevel2 = GameUserSettings.GetIntegerValue("FFRLevel");
OVRManager.FixedFoveatedRenderingLevel FFR2 = (OVRManager.FixedFoveatedRenderingLevel)FixedFoveatedRenderingLevel2;
OVRManager.fixedFoveatedRenderingLevel = FFR2;

 

Let's hope this gets resolved soon, it would be nice to not have to do this!

New Participant
April 27, 2022

Wow that's hilarious, crying at how long I've spent trying to make this work. Thanks for the fix!