From 6f269c375f3cc6767294c551b093edfeb66ddab5 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Fri, 6 Dec 2019 01:43:06 -0600 Subject: [PATCH] citra, citra_qt, settings.h, default_ini.h: Add option for interlaced 3D --- src/citra/config.cpp | 11 +++++++---- src/citra/default_ini.h | 2 +- .../configuration/configure_enhancements.cpp | 14 ++++++++------ .../configuration/configure_enhancements.h | 6 +++++- .../configuration/configure_enhancements.ui | 5 +++++ src/core/settings.h | 2 +- 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 86d592b8c..9193dcb5e 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -131,10 +131,13 @@ void Config::ReadValues() { sdl2_config->GetInteger("Renderer", "render_3d", 0)); Settings::values.factor_3d = static_cast(sdl2_config->GetInteger("Renderer", "factor_3d", 0)); - Settings::values.pp_shader_name = sdl2_config->GetString( - "Renderer", "pp_shader_name", - (Settings::values.render_3d == Settings::StereoRenderOption::Anaglyph) ? "dubois (builtin)" - : "none (builtin)"); + std::string default_shader = "none (builtin)"; + if (Settings::values.render_3d == Settings::StereoRenderOption::Anaglyph) + default_shader = "dubois (builtin)"; + else if (Settings::values.render_3d == Settings::StereoRenderOption::Interlaced) + default_shader = "horizontal (builtin)"; + Settings::values.pp_shader_name = + sdl2_config->GetString("Renderer", "pp_shader_name", default_shader); Settings::values.filter_mode = sdl2_config->GetBoolean("Renderer", "filter_mode", true); Settings::values.bg_red = static_cast(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index d646823e2..79481dc75 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -137,7 +137,7 @@ bg_blue = bg_green = # Whether and how Stereoscopic 3D should be rendered -# 0 (default): Off, 1: Side by Side, 2: Anaglyph +# 0 (default): Off, 1: Side by Side, 2: Anaglyph, 3: Interlaced render_3d = # Change 3D Intensity diff --git a/src/citra_qt/configuration/configure_enhancements.cpp b/src/citra_qt/configuration/configure_enhancements.cpp index 677f868c2..97cc1f53d 100644 --- a/src/citra_qt/configuration/configure_enhancements.cpp +++ b/src/citra_qt/configuration/configure_enhancements.cpp @@ -21,8 +21,7 @@ ConfigureEnhancements::ConfigureEnhancements(QWidget* parent) connect(ui->render_3d_combobox, static_cast(&QComboBox::currentIndexChanged), this, [this](int currentIndex) { - updateShaders(static_cast(currentIndex) == - Settings::StereoRenderOption::Anaglyph); + updateShaders(static_cast(currentIndex)); }); connect(ui->bg_button, &QPushButton::clicked, this, [this] { @@ -49,7 +48,7 @@ void ConfigureEnhancements::SetConfiguration() { ui->resolution_factor_combobox->setCurrentIndex(Settings::values.resolution_factor); ui->render_3d_combobox->setCurrentIndex(static_cast(Settings::values.render_3d)); ui->factor_3d->setValue(Settings::values.factor_3d); - updateShaders(Settings::values.render_3d == Settings::StereoRenderOption::Anaglyph); + updateShaders(Settings::values.render_3d); ui->toggle_linear_filter->setChecked(Settings::values.filter_mode); ui->layout_combobox->setCurrentIndex(static_cast(Settings::values.layout_option)); ui->swap_screen->setChecked(Settings::values.swap_screen); @@ -64,17 +63,20 @@ void ConfigureEnhancements::SetConfiguration() { ui->bg_button->setIcon(color_icon); } -void ConfigureEnhancements::updateShaders(bool anaglyph) { +void ConfigureEnhancements::updateShaders(Settings::StereoRenderOption stereo_option) { ui->shader_combobox->clear(); - if (anaglyph) + if (stereo_option == Settings::StereoRenderOption::Anaglyph) ui->shader_combobox->addItem("dubois (builtin)"); + else if (stereo_option == Settings::StereoRenderOption::Interlaced) + ui->shader_combobox->addItem("horizontal (builtin)"); else ui->shader_combobox->addItem("none (builtin)"); ui->shader_combobox->setCurrentIndex(0); - for (const auto& shader : OpenGL::GetPostProcessingShaderList(anaglyph)) { + for (const auto& shader : OpenGL::GetPostProcessingShaderList( + stereo_option == Settings::StereoRenderOption::Anaglyph)) { ui->shader_combobox->addItem(QString::fromStdString(shader)); if (Settings::values.pp_shader_name == shader) ui->shader_combobox->setCurrentIndex(ui->shader_combobox->count() - 1); diff --git a/src/citra_qt/configuration/configure_enhancements.h b/src/citra_qt/configuration/configure_enhancements.h index 422c1dc35..7155140bd 100644 --- a/src/citra_qt/configuration/configure_enhancements.h +++ b/src/citra_qt/configuration/configure_enhancements.h @@ -6,6 +6,10 @@ #include +namespace Settings { +enum class StereoRenderOption; +} + namespace Ui { class ConfigureEnhancements; } @@ -22,7 +26,7 @@ public: void SetConfiguration(); private: - void updateShaders(bool anaglyph); + void updateShaders(Settings::StereoRenderOption stereo_option); Ui::ConfigureEnhancements* ui; QColor bg_color; diff --git a/src/citra_qt/configuration/configure_enhancements.ui b/src/citra_qt/configuration/configure_enhancements.ui index bb677dabb..b268a50fe 100644 --- a/src/citra_qt/configuration/configure_enhancements.ui +++ b/src/citra_qt/configuration/configure_enhancements.ui @@ -152,6 +152,11 @@ Anaglyph + + + Interlaced + + diff --git a/src/core/settings.h b/src/core/settings.h index d7d351a4c..a0b0464f2 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -32,7 +32,7 @@ enum class MicInputType { Static, }; -enum class StereoRenderOption { Off, SideBySide, Anaglyph }; +enum class StereoRenderOption { Off, SideBySide, Anaglyph, Interlaced }; namespace NativeButton { enum Values {