From 3d984ca33fca831c506c272b272d65d3cf17cda9 Mon Sep 17 00:00:00 2001 From: Mike Miller Date: Fri, 23 Apr 2021 05:50:58 +0300 Subject: [PATCH] Read/Write DefaultRefreshRate from config file --- Assets/Scripts/UserConfig.cs | 12 +++++++++ Assets/Scripts/VrSdk.cs | 48 ++++++++++++++++++++---------------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/Assets/Scripts/UserConfig.cs b/Assets/Scripts/UserConfig.cs index a8047b3ca6..c8e917164c 100644 --- a/Assets/Scripts/UserConfig.cs +++ b/Assets/Scripts/UserConfig.cs @@ -254,6 +254,7 @@ public struct VideoConfig private const float kDefaultSmoothing = 0.98f; private const float kDefaultOdsPoleCollapsing = 1.0f; + private const float kDefaultDisplayRefresh = 72.0f; float? m_FPS; public float FPS @@ -425,6 +426,17 @@ public float OdsPoleCollapsing } } } + + float? m_DisplayRefresh; + public float DisplayRefresh + { + get { return m_DisplayRefresh ?? kDefaultDisplayRefresh; } + set + { + m_DisplayRefresh = value; + } + } + } public VideoConfig Video; diff --git a/Assets/Scripts/VrSdk.cs b/Assets/Scripts/VrSdk.cs index 4e4b756868..89ad5153ae 100644 --- a/Assets/Scripts/VrSdk.cs +++ b/Assets/Scripts/VrSdk.cs @@ -184,29 +184,35 @@ void Awake() if (App.Config.m_SdkMode == SdkMode.Oculus) { #if OCULUS_SUPPORTED - // ---------------------------------------------------------------------------------------- // - // OculusVR - // ---------------------------------------------------------------------------------------- // - OVRManager manager = gameObject.AddComponent(); - manager.trackingOriginType = OVRManager.TrackingOrigin.FloorLevel; - manager.useRecommendedMSAALevel = false; - - SetControllerStyle(TiltBrush.ControllerStyle.OculusTouch); - - // Set 90Hz if possible. To see the current framerate, look in the logs for prints like this one. The first number is the frame rate, the second is the display refresh rate - // VrApi : FPS=90/90,Prd=33ms,Tear=0,Early=0... - float[] freqs = OVRManager.display.displayFrequenciesAvailable; - if (Array.Exists(freqs, element => element == 90.0f)) - { - OVRPlugin.systemDisplayFrequency = 90.0f; - } - OVRManager.DisplayRefreshRateChanged += DisplayRefreshRateChanged; + // ---------------------------------------------------------------------------------------- // + // OculusVR + // ---------------------------------------------------------------------------------------- // + OVRManager manager = gameObject.AddComponent(); + manager.trackingOriginType = OVRManager.TrackingOrigin.FloorLevel; + manager.useRecommendedMSAALevel = false; + + SetControllerStyle(TiltBrush.ControllerStyle.OculusTouch); + + // Set custom refresh rate, if possible. To see the current framerate, look in the logs for prints like this one. The first number is the actual frame rate, the second is the display refresh rate (aka target) + // VrApi : FPS=90/90,Prd=33ms,Tear=0,Early=0... + float targetDisplayRefresh = App.UserConfig.Video.DisplayRefresh; + float[] freqs = OVRManager.display.displayFrequenciesAvailable; + foreach (float freq in freqs) + { + if (Math.Abs(freq - targetDisplayRefresh) < 1) + { + OVRPlugin.systemDisplayFrequency = freq; + OVRManager.DisplayRefreshRateChanged += DisplayRefreshRateChanged; + Debug.Log($"Set display refresh to {freq}"); + break; + } + } - // adding components to the VR Camera needed for fading view and getting controller poses. - m_VrCamera.gameObject.AddComponent(); - m_VrCamera.gameObject.AddComponent(); + // adding components to the VR Camera needed for fading view and getting controller poses. + m_VrCamera.gameObject.AddComponent(); + m_VrCamera.gameObject.AddComponent(); - gameObject.AddComponent(); + gameObject.AddComponent(); #endif // OCULUS_SUPPORTED } else if (App.Config.m_SdkMode == SdkMode.SteamVR)