From 0140513cd71bb17254dcbc6944d78ff9e0ae8c9a Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 29 Mar 2021 01:12:09 -0400 Subject: [PATCH 1/3] Fix LOD manager defaults + settings not being saved correctly. --- interface/src/LODManager.cpp | 17 +++++++++++++++-- interface/src/LODManager.h | 11 ++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 4cd5025fc1..b2bbe2654b 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -19,8 +19,12 @@ #include "ui/DialogsManager.h" #include "InterfaceLogging.h" -Setting::Handle desktopWorldDetailQuality("desktopWorldDetailQuality", (int)DEFAULT_WORLD_DETAIL_QUALITY); -Setting::Handle hmdWorldDetailQuality("hmdWorldDetailQuality", (int)DEFAULT_WORLD_DETAIL_QUALITY); +const QString LOD_SETTINGS_PREFIX { "lodManager/" }; + +Setting::Handle automaticLODAdjust(LOD_SETTINGS_PREFIX + "automaticLODAdjust", (bool)DEFAULT_LOD_MODE); +Setting::Handle lodHalfAngle(LOD_SETTINGS_PREFIX + "lodHalfAngle", (float)getHalfAngleFromVisibilityDistance(DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT)); +Setting::Handle desktopWorldDetailQuality(LOD_SETTINGS_PREFIX + "desktopWorldDetailQuality", (int)DEFAULT_WORLD_DETAIL_QUALITY); +Setting::Handle hmdWorldDetailQuality(LOD_SETTINGS_PREFIX + "hmdWorldDetailQuality", (int)DEFAULT_WORLD_DETAIL_QUALITY); LODManager::LODManager() { } @@ -188,12 +192,14 @@ void LODManager::setVisibilityDistance(float distance) { // Maintain behavior with deprecated _boundaryLevelAdjust property float userDistance = distance / powf(2.0f, _boundaryLevelAdjust); _lodHalfAngle = getHalfAngleFromVisibilityDistance(userDistance); + saveSettings(); } void LODManager::setLODAngleDeg(float lodAngle) { auto newLODAngleDeg = std::max(0.001f, std::min(lodAngle, 90.f)); auto newLODHalfAngle = glm::radians(newLODAngleDeg * 0.5f); _lodHalfAngle = newLODHalfAngle; + saveSettings(); } void LODManager::setSmoothScale(float t) { @@ -244,6 +250,7 @@ void LODManager::resetLODAdjust() { void LODManager::setAutomaticLODAdjust(bool value) { std::lock_guard { _automaticLODLock }; _automaticLODAdjust = value; + saveSettings(); emit autoLODChanged(); } @@ -330,14 +337,19 @@ void LODManager::loadSettings() { if (qApp->property(hifi::properties::OCULUS_STORE).toBool() && firstRun.get()) { hmdQuality = WORLD_DETAIL_HIGH; } + + _automaticLODAdjust = automaticLODAdjust.get(); + _lodHalfAngle = lodHalfAngle.get(); setWorldDetailQuality(desktopQuality, false); setWorldDetailQuality(hmdQuality, true); } void LODManager::saveSettings() { + automaticLODAdjust.set((bool)_automaticLODAdjust); desktopWorldDetailQuality.set((int)_desktopWorldDetailQuality); hmdWorldDetailQuality.set((int)_hmdWorldDetailQuality); + lodHalfAngle.set((float)_lodHalfAngle); } const float MIN_DECREASE_FPS = 0.5f; @@ -405,6 +417,7 @@ void LODManager::setWorldDetailQuality(WorldDetailQuality quality, bool isHMDMod void LODManager::setWorldDetailQuality(WorldDetailQuality quality) { setWorldDetailQuality(quality, qApp->isHMDMode()); + saveSettings(); emit worldDetailQualityChanged(); } diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index 16b0529b05..b35ca9e212 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -44,10 +44,12 @@ enum WorldDetailQuality { }; Q_DECLARE_METATYPE(WorldDetailQuality); +const bool DEFAULT_LOD_MODE = false; // true for auto, false for manual. + #ifdef Q_OS_ANDROID -const float LOD_DEFAULT_QUALITY_LEVEL = 0.2f; // default quality level setting is High (lower framerate) +const float DEFAULT_LOD_QUALITY_LEVEL = 0.2f; // default quality level setting is High (lower framerate) #else -const float LOD_DEFAULT_QUALITY_LEVEL = 0.5f; // default quality level setting is Mid +const float DEFAULT_LOD_QUALITY_LEVEL = 0.5f; // default quality level setting is Mid #endif #ifdef Q_OS_ANDROID @@ -255,7 +257,6 @@ public: */ Q_INVOKABLE float getLODTargetFPS() const; - float getPresentTime() const { return _presentTime; } float getEngineRunTime() const { return _engineRunTime; } float getBatchTime() const { return _batchTime; } @@ -351,7 +352,7 @@ private: void setWorldDetailQuality(WorldDetailQuality quality, bool isHMDMode); std::mutex _automaticLODLock; - bool _automaticLODAdjust = true; + bool _automaticLODAdjust = DEFAULT_LOD_MODE; float _presentTime{ 0.0f }; // msec float _engineRunTime{ 0.0f }; // msec @@ -362,7 +363,7 @@ private: float _smoothScale{ 10.0f }; // smooth is evaluated over 10 times longer than now float _smoothRenderTime{ 0.0f }; // msec - float _lodQualityLevel{ LOD_DEFAULT_QUALITY_LEVEL }; + float _lodQualityLevel{ DEFAULT_LOD_QUALITY_LEVEL }; WorldDetailQuality _desktopWorldDetailQuality { DEFAULT_WORLD_DETAIL_QUALITY }; WorldDetailQuality _hmdWorldDetailQuality { DEFAULT_WORLD_DETAIL_QUALITY }; From 048c273eaf27cf216649327c92a8046f1bc6d77a Mon Sep 17 00:00:00 2001 From: Kalila L Date: Tue, 6 Apr 2021 00:13:51 -0400 Subject: [PATCH 2/3] "DEFAULT_LOD_MODE" -> "DEFAULT_LOD_AUTO_ADJUST" --- interface/src/LODManager.cpp | 2 +- interface/src/LODManager.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index b2bbe2654b..e2954cff4d 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -21,7 +21,7 @@ const QString LOD_SETTINGS_PREFIX { "lodManager/" }; -Setting::Handle automaticLODAdjust(LOD_SETTINGS_PREFIX + "automaticLODAdjust", (bool)DEFAULT_LOD_MODE); +Setting::Handle automaticLODAdjust(LOD_SETTINGS_PREFIX + "automaticLODAdjust", (bool)DEFAULT_LOD_AUTO_ADJUST); Setting::Handle lodHalfAngle(LOD_SETTINGS_PREFIX + "lodHalfAngle", (float)getHalfAngleFromVisibilityDistance(DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT)); Setting::Handle desktopWorldDetailQuality(LOD_SETTINGS_PREFIX + "desktopWorldDetailQuality", (int)DEFAULT_WORLD_DETAIL_QUALITY); Setting::Handle hmdWorldDetailQuality(LOD_SETTINGS_PREFIX + "hmdWorldDetailQuality", (int)DEFAULT_WORLD_DETAIL_QUALITY); diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index b35ca9e212..53987f660d 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -44,7 +44,7 @@ enum WorldDetailQuality { }; Q_DECLARE_METATYPE(WorldDetailQuality); -const bool DEFAULT_LOD_MODE = false; // true for auto, false for manual. +const bool DEFAULT_LOD_AUTO_ADJUST = false; // true for auto, false for manual. #ifdef Q_OS_ANDROID const float DEFAULT_LOD_QUALITY_LEVEL = 0.2f; // default quality level setting is High (lower framerate) @@ -352,7 +352,7 @@ private: void setWorldDetailQuality(WorldDetailQuality quality, bool isHMDMode); std::mutex _automaticLODLock; - bool _automaticLODAdjust = DEFAULT_LOD_MODE; + bool _automaticLODAdjust = DEFAULT_LOD_AUTO_ADJUST; float _presentTime{ 0.0f }; // msec float _engineRunTime{ 0.0f }; // msec From 5c7613981689692f30b1ef4239f822cae535a9b6 Mon Sep 17 00:00:00 2001 From: Kalila L Date: Mon, 19 Apr 2021 15:44:52 -0400 Subject: [PATCH 3/3] Update copyright headers. --- interface/src/LODManager.cpp | 1 + interface/src/LODManager.h | 1 + 2 files changed, 2 insertions(+) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index e2954cff4d..1c6ef387f3 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -4,6 +4,7 @@ // // Created by Clement on 1/16/15. // Copyright 2015 High Fidelity, Inc. +// Copyright 2021 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index 53987f660d..35f80efcda 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -4,6 +4,7 @@ // // Created by Clement on 1/16/15. // Copyright 2015 High Fidelity, Inc. +// Copyright 2021 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html