diff --git a/Readme.md b/Readme.md
index b922dd5..90902a1 100644
--- a/Readme.md
+++ b/Readme.md
@@ -126,11 +126,8 @@ If you want to try latest and greatest unreleased features, you can download lat
- **Profile**: Allows to apply/define/delete supersampling profiles that save supersampling and reprojection settings.
- **Application Supersampling**: Supersampling setting for OpenVR applications/games. Application supersampling [now behaves linearly](https://steamcommunity.com/games/250820/announcements/detail/1256913672017664045) where 2.0 means twice the number of pixel.
-- **Compositor Render Target Multiplier**: Supersampling setting for the OpenVR compositor (Requires restart). Compositor supersampling still behaves the old way where 2.0 means four-times the number of pixel.
-- **Enable Advanced Supersample Filtering**: Einable/disable image filtering on supersampled renderings.
-- **Allow Asynchronous Reprojection**: Enable/disable asynchronous reprojection.
-- **Allow Interleaved Reprojection**: Enable/disable interleaved reprojection.
-- **Enable Always-on Reprojection**: Enable/disable forced reprojection.
+ - **Note**: Manual Override for Super-Sampling must be checked in the SteamVR/OpenVR settings menu.
+- **Enable Motion Smoothing**: Enables Motion Smoothing, and disables asynchronous reprojection.
- **Restart SteamVR**: Restart SteamVR (May crash the Steam overlay when SteamVR Home is running when you restart. Therefore I advice that you close SteamVR Home before restarting).
diff --git a/docs/screenshots/SteamVRPage.png b/docs/screenshots/SteamVRPage.png
index 9e4e2d8..53b18c6 100644
Binary files a/docs/screenshots/SteamVRPage.png and b/docs/screenshots/SteamVRPage.png differ
diff --git a/src/res/qml/SteamVRPage.qml b/src/res/qml/SteamVRPage.qml
index 99d06c7..0f297c1 100644
--- a/src/res/qml/SteamVRPage.qml
+++ b/src/res/qml/SteamVRPage.qml
@@ -69,9 +69,9 @@ MyStackViewPage {
text: "Supersample Filtering"
}
MyToggleButton {
- id: steamvrNewProfileIncludeReprojectionSettingsg
+ id: steamvrNewProfileIncludeMotionSmoothing
Layout.leftMargin: 32
- text: "Reprojection Settings"
+ text: "Motion Smoothing Setting"
}
}
onClosed: {
@@ -80,13 +80,14 @@ MyStackViewPage {
steamvrMessageDialog.showMessage("Create New Profile", "ERROR: Empty profile name.")
} else if (!steamvrNewProfileIncludeSupersampling.checked
&& !steamvrNewProfileIncludeSupersampleFiltering.checked
- && !steamvrNewProfileIncludeReprojectionSettingsg.checked) {
+ && !steamvrNewProfileIncludeMotionSmoothing.checked) {
steamvrMessageDialog.showMessage("Create New Profile", "ERROR: Nothing included.")
} else {
SteamVRTabController.addSteamVRProfile(steamvrNewProfileName.text,
steamvrNewProfileIncludeSupersampling.checked,
steamvrNewProfileIncludeSupersampleFiltering.checked,
- steamvrNewProfileIncludeReprojectionSettingsg.checked)
+ steamvrNewProfileIncludeMotionSmoothing.checked
+ )
}
}
@@ -95,7 +96,7 @@ MyStackViewPage {
steamvrNewProfileName.text = ""
steamvrNewProfileIncludeSupersampling.checked = false
steamvrNewProfileIncludeSupersampleFiltering.checked = false
- steamvrNewProfileIncludeReprojectionSettingsg.checked = false
+ steamvrNewProfileIncludeMotionSmoothing.checked = false
open()
}
}
@@ -141,7 +142,6 @@ MyStackViewPage {
onClicked: {
if (steamvrProfileComboBox.currentIndex > 0) {
SteamVRTabController.applySteamVRProfile(steamvrProfileComboBox.currentIndex - 1)
- steamvrProfileComboBox.currentIndex = 0
}
}
}
@@ -239,75 +239,6 @@ MyStackViewPage {
}
}
}
-
- RowLayout {
- spacing: 16
-
- MyText {
- text: "Compositor Render Target Multiplier*:"
- Layout.preferredWidth: 450
- Layout.rightMargin: 12
- }
-
- MyPushButton2 {
- text: "-"
- Layout.preferredWidth: 40
- onClicked: {
- steamvrCompositorSupersamplingSlider.decrease()
- }
- }
-
- MySlider {
- id: steamvrCompositorSupersamplingSlider
- from: 0.1
- to: 2
- stepSize: 0.1
- value: 1.0
- snapMode: Slider.SnapAlways
- Layout.fillWidth: true
- onPositionChanged: {
- var val = this.from + ( this.position * (this.to - this.from))
- steamvrCompositorSupersamplingText.text = val.toFixed(1)
- }
- onValueChanged: {
- SteamVRTabController.setCompositorSuperSampling(this.value.toFixed(1), false)
- }
- }
-
- MyPushButton2 {
- text: "+"
- Layout.preferredWidth: 40
- onClicked: {
- steamvrCompositorSupersamplingSlider.increase()
- }
- }
-
-
- MyTextField {
- id: steamvrCompositorSupersamplingText
- text: "0.0"
- keyBoardUID: 402
- Layout.preferredWidth: 100
- Layout.leftMargin: 10
- horizontalAlignment: Text.AlignHCenter
- function onInputEvent(input) {
- var val = parseFloat(input)
- if (!isNaN(val)) {
- if (val < 0.1) {
- val = 0.1
- }
- var v = val.toFixed(1)
- if (v <= steamvrCompositorSupersamplingSlider.to) {
- steamvrCompositorSupersamplingSlider.value = v
- } else {
- SteamVRTabController.setCompositorSuperSampling(v, false)
- }
- }
- text = SteamVRTabController.compositorSuperSampling.toFixed(1)
- }
- }
- }
-
MyToggleButton {
id: steamvrAllowSupersampleFilteringToggle
text: "Enable Advanced Supersample Filtering"
@@ -317,38 +248,15 @@ MyStackViewPage {
}
MyToggleButton {
- id: steamvrAllowAsyncReprojectionToggle
- text: "Allow Asynchronous Reprojection"
+ id: steamvrMotionSmoothingToggle
+ text: "Enable Motion Smoothing"
onCheckedChanged: {
- SteamVRTabController.setAllowAsyncReprojection(this.checked, false)
- }
- }
-
- MyToggleButton {
- id: steamvrAllowInterleavedReprojectionToggle
- text: "Allow Interleaved Reprojection"
- onCheckedChanged: {
- SteamVRTabController.setAllowInterleavedReprojection(this.checked, false)
- }
- }
-
- MyToggleButton {
- id: steamvrForceReprojectionToggle
- text: "Enable Always-on Reprojection"
- onCheckedChanged: {
- SteamVRTabController.setForceReprojection(this.checked, false)
+ SteamVRTabController.setMotionSmoothing(this.checked, false)
}
}
Item { Layout.fillHeight: true; Layout.fillWidth: true}
- MyText {
- Layout.fillWidth: true
- horizontalAlignment: Text.AlignRight
- text: "* Requires Restart"
- font.pointSize: 18
- }
-
RowLayout {
Layout.fillWidth: true
@@ -378,16 +286,8 @@ MyStackViewPage {
if (s1 <= steamvrSupersamplingSlider.to) {
steamvrSupersamplingSlider.value = s1
}
- steamvrSupersamplingText.text = s1
- var s2 = SteamVRTabController.compositorSuperSampling.toFixed(1)
- if (s2 <= steamvrCompositorSupersamplingSlider.to) {
- steamvrCompositorSupersamplingSlider.value = s2
- }
- steamvrCompositorSupersamplingText.text = s2
steamvrAllowSupersampleFilteringToggle.checked = SteamVRTabController.allowSupersampleFiltering
- steamvrAllowInterleavedReprojectionToggle.checked = SteamVRTabController.allowInterleavedReprojection
- steamvrAllowAsyncReprojectionToggle.checked = SteamVRTabController.allowAsyncReprojection
- steamvrForceReprojectionToggle.checked = SteamVRTabController.forceReprojection
+ steamvrMotionSmoothingToggle.checked = SteamVRTabController.motionSmoothing
reloadSteamVRProfiles()
}
@@ -400,28 +300,20 @@ MyStackViewPage {
}
steamvrSupersamplingText.text = s1
}
- onCompositorSuperSamplingChanged: {
- var s2 = SteamVRTabController.compositorSuperSampling.toFixed(1)
- if (s2 <= steamvrCompositorSupersamplingSlider.to && Math.abs(steamvrCompositorSupersamplingSlider.value-s2) > 0.08) {
- steamvrCompositorSupersamplingSlider.value = s2
- }
- steamvrCompositorSupersamplingText.text = s2
- }
onAllowSupersampleFilteringChanged: {
steamvrAllowSupersampleFilteringToggle.checked = SteamVRTabController.allowSupersampleFiltering
}
- onAllowInterleavedReprojectionChanged: {
- steamvrAllowInterleavedReprojectionToggle.checked = SteamVRTabController.allowInterleavedReprojection
- }
- onAllowAsyncReprojectionChanged: {
- steamvrAllowAsyncReprojectionToggle.checked = SteamVRTabController.allowAsyncReprojection
- }
- onForceReprojectionChanged: {
- steamvrForceReprojectionToggle.checked = SteamVRTabController.forceReprojection
+
+ onMotionSmoothingChanged: {
+ steamvrMotionSmoothingToggle.checked = SteamVRTabController.motionSmoothing
}
+
onSteamVRProfilesUpdated: {
reloadSteamVRProfiles()
}
+ onSteamVRProfileAdded:{
+ steamvrProfileComboBox.currentIndex = SteamVRTabController.getSteamVRProfileCount()
+ }
}
}
diff --git a/src/tabcontrollers/SteamVRTabController.cpp b/src/tabcontrollers/SteamVRTabController.cpp
index 8da4f27..67065bf 100644
--- a/src/tabcontrollers/SteamVRTabController.cpp
+++ b/src/tabcontrollers/SteamVRTabController.cpp
@@ -2,40 +2,12 @@
#include
#include "../overlaycontroller.h"
-namespace vr
-{
-// this was removed from openvr_api.h in 1.0.8
-static const char* const k_pch_SteamVR_RenderTargetMultiplier_Float
- = "renderTargetMultiplier";
-
-// This was removed when updating from an unknown version to OpenVR
-// version 1.1.3. This should probably be removed along with any features
-// connected to it. Valve probably removed it for a reason.
-static const char* const k_pch_SteamVR_AllowAsyncReprojection_Bool
- = "allowAsyncReprojection";
-static const char* const k_pch_SteamVR_AllowReprojection_Bool
- = "allowInterleavedReprojection";
-static const char* const k_pch_SteamVR_ForceReprojection_Bool
- = "forceReprojection";
-} // namespace vr
-
// application namespace
namespace advsettings
{
-// openvr's github repo hasn't been updated yet to reflect changes in beta
-// 1477423729.
-// static const char* vrsettings_steamvr_allowAsyncReprojection =
-// "allowAsyncReprojection"; static const char*
-// vrsettings_steamvr_allowInterleavedReprojection =
-// "allowInterleavedReprojection";
-
-static const char* vrsettings_steamvr_supersampleScale = "supersampleScale";
-static const char* vrsettings_steamvr_allowSupersampleFiltering
- = "allowSupersampleFiltering";
-static const char* vrsettings_compositor_category = "compositor";
-
void SteamVRTabController::initStage1()
{
+ initMotionSmoothing();
eventLoopTick();
reloadSteamVRProfiles();
}
@@ -74,16 +46,12 @@ void SteamVRTabController::reloadSteamVRProfiles()
entry.supersampleFiltering
= settings->value( "supersampleFiltering", true ).toBool();
}
- entry.includesReprojectionSettings
- = settings->value( "includesReprojectionSettings", false ).toBool();
- if ( entry.includesReprojectionSettings )
+ entry.includesMotionSmoothing
+ = settings->value( "includesMotionSmoothing", false ).toBool();
+ if ( entry.includesMotionSmoothing )
{
- entry.asynchronousReprojection
- = settings->value( "asynchronousReprojection", true ).toBool();
- entry.interleavedReprojection
- = settings->value( "interleavedReprojection", true ).toBool();
- entry.alwaysOnReprojection
- = settings->value( "alwaysOnReprojection", true ).toBool();
+ entry.motionSmooth
+ = settings->value( "motionSmooth", true ).toBool();
}
}
settings->endArray();
@@ -113,17 +81,13 @@ void SteamVRTabController::saveSteamVRProfiles()
settings->setValue( "supersampleFiltering",
p.supersampleFiltering );
}
- settings->setValue( "includesReprojectionSettings",
- p.includesReprojectionSettings );
- if ( p.includesReprojectionSettings )
+ settings->setValue( "includesMotionSmoothing",
+ p.includesMotionSmoothing );
+ if ( p.includesMotionSmoothing )
{
- settings->setValue( "asynchronousReprojection",
- p.asynchronousReprojection );
- settings->setValue( "interleavedReprojection",
- p.interleavedReprojection );
- settings->setValue( "alwaysOnReprojection",
- p.alwaysOnReprojection );
+ settings->setValue( "motionSmooth", p.motionSmooth );
}
+
i++;
}
settings->endArray();
@@ -147,20 +111,23 @@ Q_INVOKABLE QString
return QString::fromStdString( steamvrProfiles[index].profileName );
}
}
-
+// TODO DISC does it make any sense to check these settings once every ~
+// 1second. primary purpose seems to be to re-sync settings if changed via other
+// means?
void SteamVRTabController::eventLoopTick()
{
if ( settingsUpdateCounter >= 50 )
{
vr::EVRSettingsError vrSettingsError;
- auto ss
- = vr::VRSettings()->GetFloat( vr::k_pch_SteamVR_Section,
- vrsettings_steamvr_supersampleScale,
- &vrSettingsError );
+ // checks supersampling and re-synchs if necessary
+ auto ss = vr::VRSettings()->GetFloat(
+ vr::k_pch_SteamVR_Section,
+ vr::k_pch_SteamVR_SupersampleScale_Float,
+ &vrSettingsError );
if ( vrSettingsError != vr::VRSettingsError_None )
{
LOG( WARNING ) << "Could not read \""
- << vrsettings_steamvr_supersampleScale
+ << vr::k_pch_SteamVR_SupersampleScale_Float
<< "\" setting: "
<< vr::VRSettings()->GetSettingsErrorNameFromEnum(
vrSettingsError );
@@ -178,90 +145,38 @@ void SteamVRTabController::eventLoopTick()
<< m_superSampling << " => " << ss;
setSuperSampling( ss );
}
- auto css = vr::VRSettings()->GetFloat(
- vrsettings_compositor_category,
- vr::k_pch_SteamVR_RenderTargetMultiplier_Float,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- if ( vrSettingsError
- != vr::VRSettingsError_UnsetSettingHasNoDefault )
- { // does not appear in the default settings file as of beta
- // 1477423729
- LOG( WARNING )
- << "Could not read \"compositor::"
- << vr::k_pch_SteamVR_RenderTargetMultiplier_Float
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
- if ( m_compositorSuperSampling != 1.0 )
- {
- LOG( DEBUG ) << "OpenVR returns an error and we have a custom "
- "compositor supersampling value: "
- << m_compositorSuperSampling;
- setCompositorSuperSampling( 1.0 );
- }
- }
- else if ( m_compositorSuperSampling != css )
- {
- LOG( DEBUG )
- << "OpenVR reports a changed compositor supersampling value: "
- << m_compositorSuperSampling << " => " << css;
- setCompositorSuperSampling( css );
- }
- auto air = vr::VRSettings()->GetBool(
- vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_AllowReprojection_Bool,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not read \""
- << vr::k_pch_SteamVR_AllowReprojection_Bool
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
- setAllowInterleavedReprojection( air );
- auto aar = vr::VRSettings()->GetBool(
- vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_AllowAsyncReprojection_Bool,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not read \""
- << vr::k_pch_SteamVR_AllowAsyncReprojection_Bool
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
- setAllowAsyncReprojection( aar );
- auto fr = vr::VRSettings()->GetBool(
- vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_ForceReprojection_Bool,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not read \""
- << vr::k_pch_SteamVR_ForceReprojection_Bool
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
- setForceReprojection( fr );
+ // checks if Supersampling filter is on and changes if it has been
+ // changed elsewhere
auto sf = vr::VRSettings()->GetBool(
vr::k_pch_SteamVR_Section,
- vrsettings_steamvr_allowSupersampleFiltering,
+ vr::k_pch_SteamVR_AllowSupersampleFiltering_Bool,
&vrSettingsError );
if ( vrSettingsError != vr::VRSettingsError_None )
{
LOG( WARNING ) << "Could not read \""
- << vrsettings_steamvr_allowSupersampleFiltering
+ << vr::k_pch_SteamVR_AllowSupersampleFiltering_Bool
<< "\" setting: "
<< vr::VRSettings()->GetSettingsErrorNameFromEnum(
vrSettingsError );
}
setAllowSupersampleFiltering( sf );
+
+ // Checks if Motion smoothing setting can be read and synchs adv
+ // settings to steamvr/openvr
+ auto ms
+ = vr::VRSettings()->GetBool( vr::k_pch_SteamVR_Section,
+ vr::k_pch_SteamVR_MotionSmoothing_Bool,
+ &vrSettingsError );
+ if ( vrSettingsError != vr::VRSettingsError_None )
+ {
+ LOG( WARNING ) << "Could not read \""
+ << vr::k_pch_SteamVR_MotionSmoothing_Bool
+ << "\" setting: "
+ << vr::VRSettings()->GetSettingsErrorNameFromEnum(
+ vrSettingsError );
+ }
+ setMotionSmoothing( ms );
+
settingsUpdateCounter = 0;
}
else
@@ -286,7 +201,7 @@ void SteamVRTabController::setSuperSampling( float value, bool notify )
<< " => " << value;
m_superSampling = value;
vr::VRSettings()->SetFloat( vr::k_pch_SteamVR_Section,
- vrsettings_steamvr_supersampleScale,
+ vr::k_pch_SteamVR_SupersampleScale_Float,
m_superSampling );
vr::VRSettings()->Sync();
if ( notify )
@@ -296,108 +211,78 @@ void SteamVRTabController::setSuperSampling( float value, bool notify )
}
}
-void SteamVRTabController::setCompositorSuperSampling( float value,
- bool notify )
-{
- bool override = false;
- if ( value <= 0.01f )
- {
- LOG( WARNING ) << "Encountered a compositor supersampling value <= "
- "0.01, setting supersampling to 1.0";
- value = 1.0f;
- override = true;
- }
- if ( override || m_compositorSuperSampling != value )
- {
- LOG( DEBUG ) << "Compositor supersampling value changed: "
- << m_compositorSuperSampling << " => " << value;
- m_compositorSuperSampling = value;
- vr::VRSettings()->SetFloat(
- vrsettings_compositor_category,
- vr::k_pch_SteamVR_RenderTargetMultiplier_Float,
- m_compositorSuperSampling );
- vr::VRSettings()->Sync();
- if ( notify )
- {
- emit compositorSuperSamplingChanged( m_compositorSuperSampling );
- }
- }
-}
-
float SteamVRTabController::superSampling() const
{
return m_superSampling;
}
-float SteamVRTabController::compositorSuperSampling() const
+bool SteamVRTabController::motionSmoothing() const
{
- return m_compositorSuperSampling;
+ return m_motionSmoothing;
}
-bool SteamVRTabController::allowInterleavedReprojection() const
-{
- return m_allowInterleavedReprojection;
-}
+/*
+Name: setMotionSmoothing
-bool SteamVRTabController::allowAsyncReprojection() const
-{
- return m_allowAsyncReprojection;
-}
+input: bool value, bool notify
+output: none
-void SteamVRTabController::setAllowInterleavedReprojection( bool value,
- bool notify )
+@value - value to be passed to m_motionSMoothing
+@notify - whether QML is informed of change (default true)
+
+Description:
+sets value of m_motionSmoothing AND applies changes in Steam/OpenVr
+*/
+
+void SteamVRTabController::setMotionSmoothing( bool value, bool notify )
{
- if ( m_allowInterleavedReprojection != value )
+ if ( m_motionSmoothing != value )
{
- m_allowInterleavedReprojection = value;
+ m_motionSmoothing = value;
vr::VRSettings()->SetBool( vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_AllowReprojection_Bool,
- m_allowInterleavedReprojection );
+ vr::k_pch_SteamVR_MotionSmoothing_Bool,
+ m_motionSmoothing );
vr::VRSettings()->Sync();
if ( notify )
{
- emit allowInterleavedReprojectionChanged(
- m_allowInterleavedReprojection );
+ emit motionSmoothingChanged( m_motionSmoothing );
}
}
}
-void SteamVRTabController::setAllowAsyncReprojection( bool value, bool notify )
+/*
+Name: initMotionSmoothing
+
+input: none
+output: none
+
+description: Gets the Value of Motion Smoothing from Steam/OpenVR.
+Sets the member variable of motion smoothing for UI
+Adds error to log if unable to find variable.
+
+OnError:
+default value of true for motion smoothing is initialized, if user has disabled
+motion smoothing on their end, they will have to toggle the variable twice to
+get it to re-sync.
+*/
+void SteamVRTabController::initMotionSmoothing()
{
- if ( m_allowAsyncReprojection != value )
+ bool temporary = false;
+ vr::EVRSettingsError vrSettingsError;
+ temporary
+ = vr::VRSettings()->GetBool( vr::k_pch_SteamVR_Section,
+ vr::k_pch_SteamVR_MotionSmoothing_Bool,
+ &vrSettingsError );
+ if ( vrSettingsError != vr::VRSettingsError_None )
{
- m_allowAsyncReprojection = value;
- vr::VRSettings()->SetBool(
- vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_AllowAsyncReprojection_Bool,
- m_allowAsyncReprojection );
- vr::VRSettings()->Sync();
- if ( notify )
- {
- emit allowAsyncReprojectionChanged( m_allowAsyncReprojection );
- }
- }
-}
-
-bool SteamVRTabController::forceReprojection() const
-{
- return m_forceReprojection;
-}
-
-void SteamVRTabController::setForceReprojection( bool value, bool notify )
-{
- if ( m_forceReprojection != value )
- {
- m_forceReprojection = value;
- vr::VRSettings()->SetBool( vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_ForceReprojection_Bool,
- m_forceReprojection );
- vr::VRSettings()->Sync();
- if ( notify )
- {
- emit forceReprojectionChanged( m_forceReprojection );
- }
+ LOG( WARNING ) << "Could not get MotionSmoothing State \""
+ << vr::k_pch_SteamVR_MotionSmoothing_Bool
+ << "\" setting: "
+ << vr::VRSettings()->GetSettingsErrorNameFromEnum(
+ vrSettingsError );
}
+ vr::VRSettings()->Sync();
+ setMotionSmoothing( temporary, true );
}
bool SteamVRTabController::allowSupersampleFiltering() const
@@ -411,9 +296,10 @@ void SteamVRTabController::setAllowSupersampleFiltering( bool value,
if ( m_allowSupersampleFiltering != value )
{
m_allowSupersampleFiltering = value;
- vr::VRSettings()->SetBool( vr::k_pch_SteamVR_Section,
- vrsettings_steamvr_allowSupersampleFiltering,
- m_allowSupersampleFiltering );
+ vr::VRSettings()->SetBool(
+ vr::k_pch_SteamVR_Section,
+ vr::k_pch_SteamVR_AllowSupersampleFiltering_Bool,
+ m_allowSupersampleFiltering );
vr::VRSettings()->Sync();
if ( notify )
{
@@ -427,27 +313,14 @@ void SteamVRTabController::reset()
{
vr::EVRSettingsError vrSettingsError;
- vr::VRSettings()->RemoveKeyInSection( vr::k_pch_SteamVR_Section,
- vrsettings_steamvr_supersampleScale,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not remove \""
- << vrsettings_steamvr_supersampleScale << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
-
- setCompositorSuperSampling( 1.0f ); // Is not in default.vrsettings yet
vr::VRSettings()->RemoveKeyInSection(
- vrsettings_compositor_category,
- vr::k_pch_SteamVR_RenderTargetMultiplier_Float,
+ vr::k_pch_SteamVR_Section,
+ vr::k_pch_SteamVR_SupersampleScale_Float,
&vrSettingsError );
if ( vrSettingsError != vr::VRSettingsError_None )
{
LOG( WARNING ) << "Could not remove \""
- << vrsettings_compositor_category
- << "::" << vr::k_pch_SteamVR_RenderTargetMultiplier_Float
+ << vr::k_pch_SteamVR_SupersampleScale_Float
<< "\" setting: "
<< vr::VRSettings()->GetSettingsErrorNameFromEnum(
vrSettingsError );
@@ -455,51 +328,12 @@ void SteamVRTabController::reset()
vr::VRSettings()->RemoveKeyInSection(
vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_AllowReprojection_Bool,
+ vr::k_pch_SteamVR_AllowSupersampleFiltering_Bool,
&vrSettingsError );
if ( vrSettingsError != vr::VRSettingsError_None )
{
LOG( WARNING ) << "Could not remove \""
- << vr::k_pch_SteamVR_AllowReprojection_Bool
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
-
- vr::VRSettings()->RemoveKeyInSection(
- vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_AllowAsyncReprojection_Bool,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not remove \""
- << vr::k_pch_SteamVR_AllowAsyncReprojection_Bool
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
-
- vr::VRSettings()->RemoveKeyInSection(
- vr::k_pch_SteamVR_Section,
- vr::k_pch_SteamVR_ForceReprojection_Bool,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not remove \""
- << vr::k_pch_SteamVR_ForceReprojection_Bool
- << "\" setting: "
- << vr::VRSettings()->GetSettingsErrorNameFromEnum(
- vrSettingsError );
- }
-
- vr::VRSettings()->RemoveKeyInSection(
- vr::k_pch_SteamVR_Section,
- vrsettings_steamvr_allowSupersampleFiltering,
- &vrSettingsError );
- if ( vrSettingsError != vr::VRSettingsError_None )
- {
- LOG( WARNING ) << "Could not remove \""
- << vrsettings_steamvr_allowSupersampleFiltering
+ << vr::k_pch_SteamVR_AllowSupersampleFiltering_Bool
<< "\" setting: "
<< vr::VRSettings()->GetSettingsErrorNameFromEnum(
vrSettingsError );
@@ -521,7 +355,7 @@ void SteamVRTabController::restartSteamVR()
void SteamVRTabController::addSteamVRProfile( QString name,
bool includeSupersampling,
bool includeSupersampleFiltering,
- bool includeReprojectionSettings )
+ bool includeMotionSmoothing )
{
SteamVRProfile* profile = nullptr;
for ( auto& p : steamvrProfiles )
@@ -549,16 +383,15 @@ void SteamVRTabController::addSteamVRProfile( QString name,
{
profile->supersampleFiltering = m_allowSupersampleFiltering;
}
- profile->includesReprojectionSettings = includeReprojectionSettings;
- if ( includeReprojectionSettings )
+ profile->includesMotionSmoothing = includeMotionSmoothing;
+ if ( includeMotionSmoothing )
{
- profile->asynchronousReprojection = m_allowAsyncReprojection;
- profile->interleavedReprojection = m_allowInterleavedReprojection;
- profile->alwaysOnReprojection = m_forceReprojection;
+ profile->motionSmooth = m_motionSmoothing;
}
saveSteamVRProfiles();
OverlayController::appSettings()->sync();
emit steamVRProfilesUpdated();
+ emit steamVRProfileAdded();
}
void SteamVRTabController::applySteamVRProfile( unsigned index )
@@ -574,11 +407,9 @@ void SteamVRTabController::applySteamVRProfile( unsigned index )
{
setAllowSupersampleFiltering( profile.supersampleFiltering );
}
- if ( profile.includesReprojectionSettings )
+ if ( profile.includesMotionSmoothing )
{
- setAllowAsyncReprojection( profile.asynchronousReprojection );
- setAllowInterleavedReprojection( profile.interleavedReprojection );
- setForceReprojection( profile.alwaysOnReprojection );
+ setMotionSmoothing( profile.motionSmooth );
}
vr::VRSettings()->Sync( true );
}
diff --git a/src/tabcontrollers/SteamVRTabController.h b/src/tabcontrollers/SteamVRTabController.h
index 142ba1f..a6c2220 100644
--- a/src/tabcontrollers/SteamVRTabController.h
+++ b/src/tabcontrollers/SteamVRTabController.h
@@ -19,11 +19,8 @@ struct SteamVRProfile
bool includesSupersampleFiltering = false;
bool supersampleFiltering = false;
-
- bool includesReprojectionSettings = false;
- bool asynchronousReprojection = true;
- bool interleavedReprojection = true;
- bool alwaysOnReprojection = true;
+ bool motionSmooth = false;
+ bool includesMotionSmoothing = false;
};
class SteamVRTabController : public QObject
@@ -31,18 +28,13 @@ class SteamVRTabController : public QObject
Q_OBJECT
Q_PROPERTY( float superSampling READ superSampling WRITE setSuperSampling
NOTIFY superSamplingChanged )
- Q_PROPERTY(
+ /*Q_PROPERTY(
float compositorSuperSampling READ compositorSuperSampling WRITE
setCompositorSuperSampling NOTIFY compositorSuperSamplingChanged )
- Q_PROPERTY(
- bool allowInterleavedReprojection READ allowInterleavedReprojection
- WRITE setAllowInterleavedReprojection NOTIFY
- allowInterleavedReprojectionChanged )
- Q_PROPERTY(
- bool allowAsyncReprojection READ allowAsyncReprojection WRITE
- setAllowAsyncReprojection NOTIFY allowAsyncReprojectionChanged )
- Q_PROPERTY( bool forceReprojection READ forceReprojection WRITE
- setForceReprojection NOTIFY forceReprojectionChanged )
+ */
+
+ Q_PROPERTY( bool motionSmoothing READ motionSmoothing WRITE
+ setMotionSmoothing NOTIFY motionSmoothingChanged )
Q_PROPERTY( bool allowSupersampleFiltering READ allowSupersampleFiltering
WRITE setAllowSupersampleFiltering NOTIFY
allowSupersampleFilteringChanged )
@@ -52,12 +44,12 @@ private:
QQuickWindow* widget;
float m_superSampling = 1.0;
- float m_compositorSuperSampling = 1.0;
- bool m_allowInterleavedReprojection = true;
- bool m_allowAsyncReprojection = true;
- bool m_forceReprojection = false;
+ // float m_compositorSuperSampling = 1.0;
+ bool m_motionSmoothing = true;
bool m_allowSupersampleFiltering = true;
+ void initMotionSmoothing();
+
std::vector steamvrProfiles;
unsigned settingsUpdateCounter = 0;
@@ -69,10 +61,8 @@ public:
void eventLoopTick();
float superSampling() const;
- float compositorSuperSampling() const;
- bool allowInterleavedReprojection() const;
- bool allowAsyncReprojection() const;
- bool forceReprojection() const;
+ // float compositorSuperSampling() const;
+ bool motionSmoothing() const;
bool allowSupersampleFiltering() const;
void reloadSteamVRProfiles();
@@ -83,16 +73,14 @@ public:
public slots:
void setSuperSampling( float value, bool notify = true );
- void setCompositorSuperSampling( float value, bool notify = true );
- void setAllowInterleavedReprojection( bool value, bool notify = true );
- void setAllowAsyncReprojection( bool value, bool notify = true );
- void setForceReprojection( bool value, bool notify = true );
+ // void setCompositorSuperSampling( float value, bool notify = true );
+ void setMotionSmoothing( bool value, bool notify = true );
void setAllowSupersampleFiltering( bool value, bool notify = true );
void addSteamVRProfile( QString name,
bool includeSupersampling,
bool includeSupersampleFiltering,
- bool includeReprojectionSettings );
+ bool includeMotionSmoothing );
void applySteamVRProfile( unsigned index );
void deleteSteamVRProfile( unsigned index );
@@ -101,13 +89,12 @@ public slots:
signals:
void superSamplingChanged( float value );
- void compositorSuperSamplingChanged( float value );
- void allowInterleavedReprojectionChanged( bool value );
- void allowAsyncReprojectionChanged( bool value );
- void forceReprojectionChanged( bool value );
+ // void compositorSuperSamplingChanged( float value );
+ void motionSmoothingChanged( bool value );
void allowSupersampleFilteringChanged( bool value );
void steamVRProfilesUpdated();
+ void steamVRProfileAdded();
};
} // namespace advsettings