Merge pull request #13021 from Pokechu22/stereo-post-processing-ui

Fix postprocessing shader not changing when setting stereo mode
This commit is contained in:
Tilka 2024-08-18 12:27:21 +01:00 committed by GitHub
commit 3cd506b685
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 32 additions and 11 deletions

View File

@ -241,7 +241,7 @@ void EnhancementsWidget::ConnectWidgets()
connect(m_3d_mode, &QComboBox::currentIndexChanged, [this] { connect(m_3d_mode, &QComboBox::currentIndexChanged, [this] {
m_block_save = true; m_block_save = true;
m_configure_color_correction->setEnabled(g_Config.backend_info.bSupportsPostProcessing); m_configure_color_correction->setEnabled(g_Config.backend_info.bSupportsPostProcessing);
LoadPPShaders(); LoadPPShaders(static_cast<StereoMode>(m_3d_mode->currentIndex()));
m_block_save = false; m_block_save = false;
SaveSettings(); SaveSettings();
@ -250,23 +250,30 @@ void EnhancementsWidget::ConnectWidgets()
&EnhancementsWidget::ConfigureColorCorrection); &EnhancementsWidget::ConfigureColorCorrection);
connect(m_configure_pp_effect, &QPushButton::clicked, this, connect(m_configure_pp_effect, &QPushButton::clicked, this,
&EnhancementsWidget::ConfigurePostProcessingShader); &EnhancementsWidget::ConfigurePostProcessingShader);
connect(&Settings::Instance(), &Settings::ConfigChanged, this, [this] {
const QSignalBlocker blocker(this);
m_block_save = true;
LoadPPShaders(Config::Get(Config::GFX_STEREO_MODE));
m_block_save = false;
});
} }
void EnhancementsWidget::LoadPPShaders() void EnhancementsWidget::LoadPPShaders(StereoMode stereo_mode)
{ {
std::vector<std::string> shaders = VideoCommon::PostProcessing::GetShaderList(); std::vector<std::string> shaders = VideoCommon::PostProcessing::GetShaderList();
if (g_Config.stereo_mode == StereoMode::Anaglyph) if (stereo_mode == StereoMode::Anaglyph)
{ {
shaders = VideoCommon::PostProcessing::GetAnaglyphShaderList(); shaders = VideoCommon::PostProcessing::GetAnaglyphShaderList();
} }
else if (g_Config.stereo_mode == StereoMode::Passive) else if (stereo_mode == StereoMode::Passive)
{ {
shaders = VideoCommon::PostProcessing::GetPassiveShaderList(); shaders = VideoCommon::PostProcessing::GetPassiveShaderList();
} }
m_pp_effect->clear(); m_pp_effect->clear();
if (g_Config.stereo_mode != StereoMode::Anaglyph && g_Config.stereo_mode != StereoMode::Passive) if (stereo_mode != StereoMode::Anaglyph && stereo_mode != StereoMode::Passive)
m_pp_effect->addItem(tr("(off)")); m_pp_effect->addItem(tr("(off)"));
auto selected_shader = Config::Get(Config::GFX_ENHANCE_POST_SHADER); auto selected_shader = Config::Get(Config::GFX_ENHANCE_POST_SHADER);
@ -283,10 +290,23 @@ void EnhancementsWidget::LoadPPShaders()
} }
} }
if (g_Config.stereo_mode == StereoMode::Anaglyph && !found) if (!found)
m_pp_effect->setCurrentIndex(m_pp_effect->findText(QStringLiteral("dubois"))); {
else if (g_Config.stereo_mode == StereoMode::Passive && !found) if (stereo_mode == StereoMode::Anaglyph)
m_pp_effect->setCurrentIndex(m_pp_effect->findText(QStringLiteral("horizontal"))); selected_shader = "dubois";
else if (stereo_mode == StereoMode::Passive)
selected_shader = "horizontal";
else
selected_shader = "";
int index = m_pp_effect->findText(QString::fromStdString(selected_shader));
if (index >= 0)
m_pp_effect->setCurrentIndex(index);
else
m_pp_effect->setCurrentIndex(0);
Config::SetBaseOrCurrent(Config::GFX_ENHANCE_POST_SHADER, selected_shader);
}
const bool supports_postprocessing = g_Config.backend_info.bSupportsPostProcessing; const bool supports_postprocessing = g_Config.backend_info.bSupportsPostProcessing;
m_pp_effect->setEnabled(supports_postprocessing); m_pp_effect->setEnabled(supports_postprocessing);
@ -381,7 +401,7 @@ void EnhancementsWidget::LoadSettings()
m_configure_color_correction->setEnabled(g_Config.backend_info.bSupportsPostProcessing); m_configure_color_correction->setEnabled(g_Config.backend_info.bSupportsPostProcessing);
// Post Processing Shader // Post Processing Shader
LoadPPShaders(); LoadPPShaders(Config::Get(Config::GFX_STEREO_MODE));
// Stereoscopy // Stereoscopy
const bool supports_stereoscopy = g_Config.backend_info.bSupportsGeometryShaders; const bool supports_stereoscopy = g_Config.backend_info.bSupportsGeometryShaders;

View File

@ -17,6 +17,7 @@ class QPushButton;
class QSlider; class QSlider;
class ToolTipComboBox; class ToolTipComboBox;
class ToolTipPushButton; class ToolTipPushButton;
enum class StereoMode : int;
class EnhancementsWidget final : public QWidget class EnhancementsWidget final : public QWidget
{ {
@ -33,7 +34,7 @@ private:
void AddDescriptions(); void AddDescriptions();
void ConfigureColorCorrection(); void ConfigureColorCorrection();
void ConfigurePostProcessingShader(); void ConfigurePostProcessingShader();
void LoadPPShaders(); void LoadPPShaders(StereoMode stereo_mode);
// Enhancements // Enhancements
ConfigChoice* m_ir_combo; ConfigChoice* m_ir_combo;