diff --git a/rpcs3/Json/tooltips.json b/rpcs3/Json/tooltips.json index cba848c991..c5a436337b 100644 --- a/rpcs3/Json/tooltips.json +++ b/rpcs3/Json/tooltips.json @@ -83,6 +83,11 @@ "perfOverlayMarginY": "Sets the vertical distance to the screen border relative to the screen quadrant (measured in pixels).", "perfOverlayCenterX": "Centers the performance overlay horizontally and overrides the horizontal margin.", "perfOverlayCenterY": "Centers the performance overlay vertically and overrides the vertical margin." + }, + "shaderLoadingScreen": { + "shaderLoadBgEnabled": "Shows a background image during the native shader loading dialog/loading screen.\nBy default the used image will be /PS3_GAME/PIC1.PNG or /PS3_GAME/PIC0.PNG.", + "shaderLoadBgDarkening": "Changes the background image darkening effect strength of the native shader loading dialog.\nThis may be used to improve readability and/or aesthetics.", + "shaderLoadBgBlur": "Changes the background image blur effect strength of the native shader loading dialog.\nThis may be used to improve readability and/or aesthetics." } }, "gpu": { diff --git a/rpcs3/rpcs3qt/emu_settings.h b/rpcs3/rpcs3qt/emu_settings.h index d641390b44..b8969e7f7d 100644 --- a/rpcs3/rpcs3qt/emu_settings.h +++ b/rpcs3/rpcs3qt/emu_settings.h @@ -90,6 +90,11 @@ public: PerfOverlayCenterX, PerfOverlayCenterY, + // Shader Loading Dialog + ShaderLoadBgEnabled, + ShaderLoadBgDarkening, + ShaderLoadBgBlur, + // Audio AudioRenderer, DumpToFile, @@ -284,6 +289,11 @@ private: { PerfOverlayCenterX, { "Video", "Performance Overlay", "Center Horizontally" } }, { PerfOverlayCenterY, { "Video", "Performance Overlay", "Center Vertically" } }, + // Shader Loading Dialog + { ShaderLoadBgEnabled, { "Video", "Shader Loading Dialog", "Allow custom background" } }, + { ShaderLoadBgDarkening, { "Video", "Shader Loading Dialog", "Darkening effect strength" } }, + { ShaderLoadBgBlur, { "Video", "Shader Loading Dialog", "Blur effect strength" } }, + // Audio { AudioRenderer, { "Audio", "Renderer"}}, { DumpToFile, { "Audio", "Dump to file"}}, diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index 5580293443..db276eb47e 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -91,6 +91,7 @@ settings_dialog::settings_dialog(std::shared_ptr guiSettings, std: QJsonObject json_emu = json_obj.value("emulator").toObject(); QJsonObject json_emu_misc = json_emu.value("misc").toObject(); QJsonObject json_emu_overlay = json_emu.value("overlay").toObject(); + QJsonObject json_emu_shaders = json_emu.value("shaderLoadingScreen").toObject(); QJsonObject json_gui = json_obj.value("gui").toObject(); @@ -860,6 +861,18 @@ settings_dialog::settings_dialog(std::shared_ptr guiSettings, std: EnablePerfOverlayOptions(ui->perfOverlayEnabled->isChecked()); connect(ui->perfOverlayEnabled, &QCheckBox::clicked, EnablePerfOverlayOptions); + xemu_settings->EnhanceCheckBox(ui->shaderLoadBgEnabled, emu_settings::ShaderLoadBgEnabled); + SubscribeTooltip(ui->shaderLoadBgEnabled, json_emu_shaders["shaderLoadBgEnabled"].toString()); + auto EnableShaderLoaderOptions = [this](bool enabled) + { + ui->label_shaderLoadBgDarkening->setEnabled(enabled); + ui->label_shaderLoadBgBlur->setEnabled(enabled); + ui->shaderLoadBgDarkening->setEnabled(enabled); + ui->shaderLoadBgBlur->setEnabled(enabled); + }; + EnableShaderLoaderOptions(ui->shaderLoadBgEnabled->isChecked()); + connect(ui->shaderLoadBgEnabled, &QCheckBox::clicked, EnableShaderLoaderOptions); + // Sliders xemu_settings->EnhanceSlider(ui->perfOverlayUpdateInterval, emu_settings::PerfOverlayUpdateInterval); @@ -886,6 +899,22 @@ settings_dialog::settings_dialog(std::shared_ptr guiSettings, std: ui->label_opacity->setText(tr("Opacity: %0 %").arg(value)); }); + xemu_settings->EnhanceSlider(ui->shaderLoadBgDarkening, emu_settings::ShaderLoadBgDarkening); + SubscribeTooltip(ui->shaderLoadBgDarkening, json_emu_shaders["shaderLoadBgDarkening"].toString()); + ui->label_shaderLoadBgDarkening->setText(tr("Background darkening: %0 %").arg(ui->shaderLoadBgDarkening->value())); + connect(ui->shaderLoadBgDarkening, &QSlider::valueChanged, [this](int value) + { + ui->label_shaderLoadBgDarkening->setText(tr("Background darkening: %0 %").arg(value)); + }); + + xemu_settings->EnhanceSlider(ui->shaderLoadBgBlur, emu_settings::ShaderLoadBgBlur); + SubscribeTooltip(ui->shaderLoadBgBlur, json_emu_shaders["shaderLoadBgBlur"].toString()); + ui->label_shaderLoadBgBlur->setText(tr("Background blur: %0 %").arg(ui->shaderLoadBgBlur->value())); + connect(ui->shaderLoadBgBlur, &QSlider::valueChanged, [this](int value) + { + ui->label_shaderLoadBgBlur->setText(tr("Background blur: %0 %").arg(value)); + }); + // SpinBoxes xemu_settings->EnhanceSpinBox(ui->perfOverlayMarginX, emu_settings::PerfOverlayMarginX, "", tr("px")); diff --git a/rpcs3/rpcs3qt/settings_dialog.ui b/rpcs3/rpcs3qt/settings_dialog.ui index 81e0b4425d..7b4c7909d4 100644 --- a/rpcs3/rpcs3qt/settings_dialog.ui +++ b/rpcs3/rpcs3qt/settings_dialog.ui @@ -1383,6 +1383,50 @@ + + + + + + + Shader Loading Screen + + + + + + Allow custom background + + + + + + + Background darkening: + + + + + + + Qt::Horizontal + + + + + + + Background blur: + + + + + + + Qt::Horizontal + + +