cancel
Showing results for 
Search instead for 
Did you mean: 

Fixed Foveated Rendering Gets Set To Zero Oculus Quest 2

Roomscale_2
Honored Guest

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? 

1 ACCEPTED SOLUTION

Accepted Solutions

synodicarc-michael
Honored Guest

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!

View solution in original post

3 REPLIES 3

Roomscale_2
Honored Guest

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

 

synodicarc-michael
Honored Guest

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!

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