From a46222030cc9dab5d5c4ccd0afcd14bf8cb1fabc Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Thu, 18 Mar 2021 19:46:45 +0100 Subject: [PATCH] Added an option to disable the blurring of the background when opening menus. --- es-app/src/guis/GuiMenu.cpp | 13 ++++++++++ es-core/src/Settings.cpp | 1 + es-core/src/Window.cpp | 49 ++++++++++++++++++++++--------------- 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/es-app/src/guis/GuiMenu.cpp b/es-app/src/guis/GuiMenu.cpp index 87207a536..3b86b0b78 100644 --- a/es-app/src/guis/GuiMenu.cpp +++ b/es-app/src/guis/GuiMenu.cpp @@ -331,6 +331,19 @@ void GuiMenu::openUISettings() s->setNeedsSaving(); } }); + + // Blur background when the menu is open. + auto menu_blur_background = std::make_shared(mWindow); + menu_blur_background->setState(Settings::getInstance()->getBool("MenuBlurBackground")); + s->addWithLabel("BLUR BACKGROUND WHEN MENU IS OPEN", menu_blur_background); + s->addSaveFunc([menu_blur_background, s] { + if (menu_blur_background->getState() != + Settings::getInstance()->getBool("MenuBlurBackground")) { + Settings::getInstance()->setBool("MenuBlurBackground", + menu_blur_background->getState()); + s->setNeedsSaving(); + } + }); #endif // Display pillarboxes (and letterboxes) for videos in the gamelists. diff --git a/es-core/src/Settings.cpp b/es-core/src/Settings.cpp index 1ce27bedc..963b80532 100644 --- a/es-core/src/Settings.cpp +++ b/es-core/src/Settings.cpp @@ -116,6 +116,7 @@ void Settings::setDefaults() mStringMap["UIMode"] = { "full", "full" }; mStringMap["DefaultSortOrder"] = { "filename, ascending", "filename, ascending" }; mStringMap["MenuOpeningEffect"] = { "scale-up", "scale-up" }; + mBoolMap["MenuBlurBackground"] = { true, true }; mBoolMap["GamelistVideoPillarbox"] = { true, true }; mBoolMap["GamelistVideoScanlines"] = { true, true }; mBoolMap["FoldersOnTop"] = { true, true }; diff --git a/es-core/src/Window.cpp b/es-core/src/Window.cpp index c7cfb9da5..947197b04 100644 --- a/es-core/src/Window.cpp +++ b/es-core/src/Window.cpp @@ -333,29 +333,38 @@ void Window::render() // Defocus the background using multiple passes of gaussian blur, with the number // of iterations relative to the screen resolution. Renderer::shaderParameters backgroundParameters; - float heightModifier = Renderer::getScreenHeightModifier(); - if (heightModifier < 1) - backgroundParameters.blurPasses = 2; // Below 1080 - else if (heightModifier >= 4) - backgroundParameters.blurPasses = 12; // 8K - else if (heightModifier >= 2.9) - backgroundParameters.blurPasses = 10; // 6K - else if (heightModifier >= 2.6) - backgroundParameters.blurPasses = 8; // 5K - else if (heightModifier >= 2) - backgroundParameters.blurPasses = 5; // 4K - else if (heightModifier >= 1.3) - backgroundParameters.blurPasses = 3; // 1440 - else if (heightModifier >= 1) - backgroundParameters.blurPasses = 2; // 1080 + if (Settings::getInstance()->getBool("MenuBlurBackground")) { + float heightModifier = Renderer::getScreenHeightModifier(); - // Also dim the background slightly. - backgroundParameters.fragmentDimValue = 0.60f; + if (heightModifier < 1) + backgroundParameters.blurPasses = 2; // Below 1080 + else if (heightModifier >= 4) + backgroundParameters.blurPasses = 12; // 8K + else if (heightModifier >= 2.9) + backgroundParameters.blurPasses = 10; // 6K + else if (heightModifier >= 2.6) + backgroundParameters.blurPasses = 8; // 5K + else if (heightModifier >= 2) + backgroundParameters.blurPasses = 5; // 4K + else if (heightModifier >= 1.3) + backgroundParameters.blurPasses = 3; // 1440 + else if (heightModifier >= 1) + backgroundParameters.blurPasses = 2; // 1080 - Renderer::shaderPostprocessing(Renderer::SHADER_BLUR_HORIZONTAL | - Renderer::SHADER_BLUR_VERTICAL | Renderer::SHADER_DIM, - backgroundParameters, processedTexture); + // Also dim the background slightly. + backgroundParameters.fragmentDimValue = 0.60f; + + Renderer::shaderPostprocessing(Renderer::SHADER_BLUR_HORIZONTAL | + Renderer::SHADER_BLUR_VERTICAL | Renderer::SHADER_DIM, + backgroundParameters, processedTexture); + } + else { + // Dim the background slightly. + backgroundParameters.fragmentDimValue = 0.60f; + Renderer::shaderPostprocessing( + Renderer::SHADER_DIM, backgroundParameters, processedTexture); + } mPostprocessedBackground->initFromPixels(processedTexture, Renderer::getScreenWidth(), Renderer::getScreenHeight());