Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
Roomscale_2's avatar
Roomscale_2
Honored Guest
3 years ago
Solved

Fixed Foveated Rendering Gets Set To Zero Oculus Quest 2

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 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

Replies have been turned off for this discussion
  • Anyone have any thoughts? This is dropping my game's fps from 72 to around 58 T_T. 

     

  • 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!

    • Roomscale_2's avatar
      Roomscale_2
      Honored Guest

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