Skip to content

Commit

Permalink
Read/Write DefaultRefreshRate from config file
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeage committed Apr 23, 2021
1 parent b984e50 commit 3d984ca
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 21 deletions.
12 changes: 12 additions & 0 deletions Assets/Scripts/UserConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
48 changes: 27 additions & 21 deletions Assets/Scripts/VrSdk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -184,29 +184,35 @@ void Awake()
if (App.Config.m_SdkMode == SdkMode.Oculus)
{
#if OCULUS_SUPPORTED
// ---------------------------------------------------------------------------------------- //
// OculusVR
// ---------------------------------------------------------------------------------------- //
OVRManager manager = gameObject.AddComponent<OVRManager>();
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<OVRManager>();
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<OculusCameraFade>();
m_VrCamera.gameObject.AddComponent<OculusPreCullHook>();
// adding components to the VR Camera needed for fading view and getting controller poses.
m_VrCamera.gameObject.AddComponent<OculusCameraFade>();
m_VrCamera.gameObject.AddComponent<OculusPreCullHook>();

gameObject.AddComponent<OculusMRCCameraUpdate>();
gameObject.AddComponent<OculusMRCCameraUpdate>();
#endif // OCULUS_SUPPORTED
}
else if (App.Config.m_SdkMode == SdkMode.SteamVR)
Expand Down

0 comments on commit 3d984ca

Please sign in to comment.