From 201b8a51406381fe32221841aefd048dd908cc47 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 17 May 2018 11:35:34 -0700 Subject: [PATCH] fixing the graphics preference --- interface/src/ui/PreferencesDialog.cpp | 61 ++++++++++++++++---------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index a7aff4ebe3..ac4ee40ebe 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -27,9 +26,6 @@ #include "SnapshotAnimated.h" #include "UserActivityLogger.h" -#include "controllers/impl/MappingBuilderProxy.h" -#include "controllers/impl/RouteBuilderProxy.h" - void setupPreferences() { auto preferences = DependencyManager::get(); auto nodeList = DependencyManager::get(); @@ -61,33 +57,50 @@ void setupPreferences() { // Graphics quality static const QString GRAPHICS_QUALITY { "Graphics Quality" }; { - auto getter = []()->float { return DependencyManager::get()->getOctreeSizeScale()/TREE_SCALE; }; - auto setter = [](float value) { DependencyManager::get()->setOctreeSizeScale(value*TREE_SCALE); }; + static const float MAX_DESKTOP_FPS = 60; + static const float MAX_HMD_FPS = 90; + static const float MIN_HMD_FPS = 35; + auto getter = []()->float { + auto lodManager = DependencyManager::get(); + float sliderValue = 0; + bool inHMD = qApp->isHMDMode(); + + if (inHMD) { + float hmdMinFPS = lodManager->getHMDLODDecreaseFPS(); + sliderValue = (MAX_HMD_FPS - hmdMinFPS) / MAX_HMD_FPS; + } else { + float desktopMinFPS = lodManager->getDesktopLODDecreaseFPS(); + sliderValue = (MAX_DESKTOP_FPS - desktopMinFPS) / MAX_DESKTOP_FPS; + } + return sliderValue; + }; + + auto setter = [](float value) { + static const float THRASHING_DIFFERENCE = 10; + auto lodManager = DependencyManager::get(); + if (qApp->isHMDMode()) { + float desiredHMDFPS = (MAX_HMD_FPS - (MAX_HMD_FPS * value)) - THRASHING_DIFFERENCE; + float actualHMDFPS = desiredHMDFPS > MIN_HMD_FPS ? desiredHMDFPS : MIN_HMD_FPS; + lodManager->setHMDLODDecreaseFPS(actualHMDFPS); + } else { + float desiredDesktopFPS = (MAX_DESKTOP_FPS - (MAX_DESKTOP_FPS * value)) - THRASHING_DIFFERENCE; + lodManager->setDesktopLODDecreaseFPS(desiredDesktopFPS); + } + }; + auto wodSlider = new SliderPreference(GRAPHICS_QUALITY, "World Detail", getter, setter); wodSlider->setMin(0); - wodSlider->setMax(2000); + wodSlider->setMax(1); + wodSlider->setStep(0.1); preferences->addPreference(wodSlider); auto getterShadow = []()->bool { - bool ret = false; - auto renderConfig = qApp->getRenderEngine()->getConfiguration(); - if (renderConfig) { - auto mainViewShadowTaskConfig = renderConfig->getConfig("RenderMainView.RenderShadowTask"); - if (mainViewShadowTaskConfig) { - ret = (mainViewShadowTaskConfig->getPreset() == QStringLiteral("Enabled")); - } - } - return ret; + auto menu = Menu::getInstance(); + return menu->isOptionChecked(MenuOption::Shadows); }; auto setterShadow = [](bool value) { - auto renderConfig = qApp->getRenderEngine()->getConfiguration(); - if (renderConfig) { - auto mainViewShadowTaskConfig = renderConfig->getConfig("RenderMainView.RenderShadowTask"); - if (mainViewShadowTaskConfig) { - mainViewShadowTaskConfig->setPreset(value ? QStringLiteral("Enabled") - : QStringLiteral("None")); - } - } + auto menu = Menu::getInstance(); + menu->setIsOptionChecked(MenuOption::Shadows, value); }; preferences->addPreference(new CheckPreference(GRAPHICS_QUALITY, "Show Shadows", getterShadow, setterShadow)); }