citra_qt: Add enhancement options to per-game (#6308)
Co-authored-by: Tobias <thm.frey@gmail.com>
This commit is contained in:
parent
fbf53686c3
commit
0c3fe272b6
|
@ -256,7 +256,6 @@ void Config::ReadValues() {
|
||||||
ReadDebuggingValues();
|
ReadDebuggingValues();
|
||||||
ReadWebServiceValues();
|
ReadWebServiceValues();
|
||||||
ReadVideoDumpingValues();
|
ReadVideoDumpingValues();
|
||||||
ReadUtilityValues();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadUIValues();
|
ReadUIValues();
|
||||||
|
@ -265,6 +264,7 @@ void Config::ReadValues() {
|
||||||
ReadLayoutValues();
|
ReadLayoutValues();
|
||||||
ReadAudioValues();
|
ReadAudioValues();
|
||||||
ReadSystemValues();
|
ReadSystemValues();
|
||||||
|
ReadUtilityValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Config::ReadAudioValues() {
|
void Config::ReadAudioValues() {
|
||||||
|
@ -436,9 +436,9 @@ void Config::ReadControlValues() {
|
||||||
void Config::ReadUtilityValues() {
|
void Config::ReadUtilityValues() {
|
||||||
qt_config->beginGroup(QStringLiteral("Utility"));
|
qt_config->beginGroup(QStringLiteral("Utility"));
|
||||||
|
|
||||||
ReadBasicSetting(Settings::values.dump_textures);
|
ReadGlobalSetting(Settings::values.dump_textures);
|
||||||
ReadBasicSetting(Settings::values.custom_textures);
|
ReadGlobalSetting(Settings::values.custom_textures);
|
||||||
ReadBasicSetting(Settings::values.preload_textures);
|
ReadGlobalSetting(Settings::values.preload_textures);
|
||||||
|
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
}
|
}
|
||||||
|
@ -497,9 +497,9 @@ void Config::ReadLayoutValues() {
|
||||||
|
|
||||||
ReadGlobalSetting(Settings::values.render_3d);
|
ReadGlobalSetting(Settings::values.render_3d);
|
||||||
ReadGlobalSetting(Settings::values.factor_3d);
|
ReadGlobalSetting(Settings::values.factor_3d);
|
||||||
|
ReadGlobalSetting(Settings::values.filter_mode);
|
||||||
ReadGlobalSetting(Settings::values.pp_shader_name);
|
ReadGlobalSetting(Settings::values.pp_shader_name);
|
||||||
ReadGlobalSetting(Settings::values.anaglyph_shader_name);
|
ReadGlobalSetting(Settings::values.anaglyph_shader_name);
|
||||||
ReadGlobalSetting(Settings::values.filter_mode);
|
|
||||||
ReadGlobalSetting(Settings::values.layout_option);
|
ReadGlobalSetting(Settings::values.layout_option);
|
||||||
ReadGlobalSetting(Settings::values.swap_screen);
|
ReadGlobalSetting(Settings::values.swap_screen);
|
||||||
ReadGlobalSetting(Settings::values.upright_screen);
|
ReadGlobalSetting(Settings::values.upright_screen);
|
||||||
|
@ -830,7 +830,6 @@ void Config::SaveValues() {
|
||||||
SaveDebuggingValues();
|
SaveDebuggingValues();
|
||||||
SaveWebServiceValues();
|
SaveWebServiceValues();
|
||||||
SaveVideoDumpingValues();
|
SaveVideoDumpingValues();
|
||||||
SaveUtilityValues();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveUIValues();
|
SaveUIValues();
|
||||||
|
@ -839,6 +838,7 @@ void Config::SaveValues() {
|
||||||
SaveLayoutValues();
|
SaveLayoutValues();
|
||||||
SaveAudioValues();
|
SaveAudioValues();
|
||||||
SaveSystemValues();
|
SaveSystemValues();
|
||||||
|
SaveUtilityValues();
|
||||||
qt_config->sync();
|
qt_config->sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -951,9 +951,9 @@ void Config::SaveControlValues() {
|
||||||
void Config::SaveUtilityValues() {
|
void Config::SaveUtilityValues() {
|
||||||
qt_config->beginGroup(QStringLiteral("Utility"));
|
qt_config->beginGroup(QStringLiteral("Utility"));
|
||||||
|
|
||||||
WriteBasicSetting(Settings::values.dump_textures);
|
WriteGlobalSetting(Settings::values.dump_textures);
|
||||||
WriteBasicSetting(Settings::values.custom_textures);
|
WriteGlobalSetting(Settings::values.custom_textures);
|
||||||
WriteBasicSetting(Settings::values.preload_textures);
|
WriteGlobalSetting(Settings::values.preload_textures);
|
||||||
|
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
}
|
}
|
||||||
|
@ -1007,9 +1007,9 @@ void Config::SaveLayoutValues() {
|
||||||
|
|
||||||
WriteGlobalSetting(Settings::values.render_3d);
|
WriteGlobalSetting(Settings::values.render_3d);
|
||||||
WriteGlobalSetting(Settings::values.factor_3d);
|
WriteGlobalSetting(Settings::values.factor_3d);
|
||||||
|
WriteGlobalSetting(Settings::values.filter_mode);
|
||||||
WriteGlobalSetting(Settings::values.pp_shader_name);
|
WriteGlobalSetting(Settings::values.pp_shader_name);
|
||||||
WriteGlobalSetting(Settings::values.anaglyph_shader_name);
|
WriteGlobalSetting(Settings::values.anaglyph_shader_name);
|
||||||
WriteGlobalSetting(Settings::values.filter_mode);
|
|
||||||
WriteGlobalSetting(Settings::values.layout_option);
|
WriteGlobalSetting(Settings::values.layout_option);
|
||||||
WriteGlobalSetting(Settings::values.swap_screen);
|
WriteGlobalSetting(Settings::values.swap_screen);
|
||||||
WriteGlobalSetting(Settings::values.upright_screen);
|
WriteGlobalSetting(Settings::values.upright_screen);
|
||||||
|
|
|
@ -33,6 +33,16 @@ void ConfigurationShared::SetPerGameSetting(QCheckBox* checkbox,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void ConfigurationShared::SetPerGameSetting(
|
||||||
|
QComboBox* combobox, const Settings::SwitchableSetting<std::string>* setting) {
|
||||||
|
const int index =
|
||||||
|
static_cast<int>(combobox->findText(QString::fromStdString(setting->GetValue())));
|
||||||
|
combobox->setCurrentIndex(setting->UsingGlobal()
|
||||||
|
? ConfigurationShared::USE_GLOBAL_INDEX
|
||||||
|
: index + ConfigurationShared::USE_GLOBAL_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigurationShared::SetHighlight(QWidget* widget, bool highlighted) {
|
void ConfigurationShared::SetHighlight(QWidget* widget, bool highlighted) {
|
||||||
if (highlighted) {
|
if (highlighted) {
|
||||||
widget->setStyleSheet(QStringLiteral("QWidget#%1 { background-color:rgba(0,203,255,0.5) }")
|
widget->setStyleSheet(QStringLiteral("QWidget#%1 { background-color:rgba(0,203,255,0.5) }")
|
||||||
|
|
|
@ -78,6 +78,11 @@ void SetPerGameSetting(QComboBox* combobox,
|
||||||
ConfigurationShared::USE_GLOBAL_OFFSET);
|
ConfigurationShared::USE_GLOBAL_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Specialization for string settings
|
||||||
|
template <>
|
||||||
|
void SetPerGameSetting(QComboBox* combobox,
|
||||||
|
const Settings::SwitchableSetting<std::string>* setting);
|
||||||
|
|
||||||
/// Given a Qt widget sets the background color to indicate whether the setting
|
/// Given a Qt widget sets the background color to indicate whether the setting
|
||||||
/// is per-game overriden (highlighted) or global (non-highlighted)
|
/// is per-game overriden (highlighted) or global (non-highlighted)
|
||||||
void SetHighlight(QWidget* widget, bool highlighted);
|
void SetHighlight(QWidget* widget, bool highlighted);
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include <QColorDialog>
|
#include <QColorDialog>
|
||||||
|
#include "citra_qt/configuration/configuration_shared.h"
|
||||||
#include "citra_qt/configuration/configure_enhancements.h"
|
#include "citra_qt/configuration/configure_enhancements.h"
|
||||||
#include "common/settings.h"
|
#include "common/settings.h"
|
||||||
#include "core/core.h"
|
|
||||||
#include "ui_configure_enhancements.h"
|
#include "ui_configure_enhancements.h"
|
||||||
#include "video_core/renderer_opengl/post_processing_opengl.h"
|
#include "video_core/renderer_opengl/post_processing_opengl.h"
|
||||||
#include "video_core/renderer_opengl/texture_filters/texture_filterer.h"
|
#include "video_core/renderer_opengl/texture_filters/texture_filterer.h"
|
||||||
|
@ -17,9 +17,10 @@ ConfigureEnhancements::ConfigureEnhancements(QWidget* parent)
|
||||||
for (const auto& filter : OpenGL::TextureFilterer::GetFilterNames())
|
for (const auto& filter : OpenGL::TextureFilterer::GetFilterNames())
|
||||||
ui->texture_filter_combobox->addItem(QString::fromStdString(filter.data()));
|
ui->texture_filter_combobox->addItem(QString::fromStdString(filter.data()));
|
||||||
|
|
||||||
|
SetupPerGameUI();
|
||||||
SetConfiguration();
|
SetConfiguration();
|
||||||
|
|
||||||
ui->layoutBox->setEnabled(!Settings::values.custom_layout);
|
ui->layout_group->setEnabled(!Settings::values.custom_layout);
|
||||||
|
|
||||||
ui->resolution_factor_combobox->setEnabled(Settings::values.use_hw_renderer.GetValue());
|
ui->resolution_factor_combobox->setEnabled(Settings::values.use_hw_renderer.GetValue());
|
||||||
|
|
||||||
|
@ -49,15 +50,24 @@ ConfigureEnhancements::ConfigureEnhancements(QWidget* parent)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigureEnhancements::~ConfigureEnhancements() = default;
|
||||||
|
|
||||||
void ConfigureEnhancements::SetConfiguration() {
|
void ConfigureEnhancements::SetConfiguration() {
|
||||||
ui->resolution_factor_combobox->setCurrentIndex(Settings::values.resolution_factor.GetValue());
|
|
||||||
ui->render_3d_combobox->setCurrentIndex(
|
if (!Settings::IsConfiguringGlobal()) {
|
||||||
static_cast<int>(Settings::values.render_3d.GetValue()));
|
ConfigurationShared::SetPerGameSetting(ui->resolution_factor_combobox,
|
||||||
ui->factor_3d->setValue(Settings::values.factor_3d.GetValue());
|
&Settings::values.resolution_factor);
|
||||||
ui->mono_rendering_eye->setCurrentIndex(
|
ConfigurationShared::SetPerGameSetting(ui->texture_filter_combobox,
|
||||||
static_cast<int>(Settings::values.mono_render_option.GetValue()));
|
&Settings::values.texture_filter_name);
|
||||||
updateShaders(Settings::values.render_3d.GetValue());
|
ConfigurationShared::SetHighlight(ui->widget_texture_filter,
|
||||||
ui->toggle_linear_filter->setChecked(Settings::values.filter_mode.GetValue());
|
!Settings::values.texture_filter_name.UsingGlobal());
|
||||||
|
ConfigurationShared::SetPerGameSetting(ui->layout_combobox,
|
||||||
|
&Settings::values.layout_option);
|
||||||
|
} else {
|
||||||
|
ui->resolution_factor_combobox->setCurrentIndex(
|
||||||
|
Settings::values.resolution_factor.GetValue());
|
||||||
|
ui->layout_combobox->setCurrentIndex(
|
||||||
|
static_cast<int>(Settings::values.layout_option.GetValue()));
|
||||||
int tex_filter_idx = ui->texture_filter_combobox->findText(
|
int tex_filter_idx = ui->texture_filter_combobox->findText(
|
||||||
QString::fromStdString(Settings::values.texture_filter_name.GetValue()));
|
QString::fromStdString(Settings::values.texture_filter_name.GetValue()));
|
||||||
if (tex_filter_idx == -1) {
|
if (tex_filter_idx == -1) {
|
||||||
|
@ -65,10 +75,17 @@ void ConfigureEnhancements::SetConfiguration() {
|
||||||
} else {
|
} else {
|
||||||
ui->texture_filter_combobox->setCurrentIndex(tex_filter_idx);
|
ui->texture_filter_combobox->setCurrentIndex(tex_filter_idx);
|
||||||
}
|
}
|
||||||
ui->layout_combobox->setCurrentIndex(
|
}
|
||||||
static_cast<int>(Settings::values.layout_option.GetValue()));
|
|
||||||
ui->swap_screen->setChecked(Settings::values.swap_screen.GetValue());
|
ui->render_3d_combobox->setCurrentIndex(
|
||||||
ui->upright_screen->setChecked(Settings::values.upright_screen.GetValue());
|
static_cast<int>(Settings::values.render_3d.GetValue()));
|
||||||
|
ui->factor_3d->setValue(Settings::values.factor_3d.GetValue());
|
||||||
|
ui->mono_rendering_eye->setCurrentIndex(
|
||||||
|
static_cast<int>(Settings::values.mono_render_option.GetValue()));
|
||||||
|
updateShaders(Settings::values.render_3d.GetValue());
|
||||||
|
ui->toggle_linear_filter->setChecked(Settings::values.filter_mode.GetValue());
|
||||||
|
ui->toggle_swap_screen->setChecked(Settings::values.swap_screen.GetValue());
|
||||||
|
ui->toggle_upright_screen->setChecked(Settings::values.upright_screen.GetValue());
|
||||||
ui->large_screen_proportion->setValue(Settings::values.large_screen_proportion.GetValue());
|
ui->large_screen_proportion->setValue(Settings::values.large_screen_proportion.GetValue());
|
||||||
ui->toggle_dump_textures->setChecked(Settings::values.dump_textures.GetValue());
|
ui->toggle_dump_textures->setChecked(Settings::values.dump_textures.GetValue());
|
||||||
ui->toggle_custom_textures->setChecked(Settings::values.custom_textures.GetValue());
|
ui->toggle_custom_textures->setChecked(Settings::values.custom_textures.GetValue());
|
||||||
|
@ -118,8 +135,8 @@ void ConfigureEnhancements::RetranslateUI() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigureEnhancements::ApplyConfiguration() {
|
void ConfigureEnhancements::ApplyConfiguration() {
|
||||||
Settings::values.resolution_factor =
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.resolution_factor,
|
||||||
static_cast<u16>(ui->resolution_factor_combobox->currentIndex());
|
ui->resolution_factor_combobox);
|
||||||
Settings::values.render_3d =
|
Settings::values.render_3d =
|
||||||
static_cast<Settings::StereoRenderOption>(ui->render_3d_combobox->currentIndex());
|
static_cast<Settings::StereoRenderOption>(ui->render_3d_combobox->currentIndex());
|
||||||
Settings::values.factor_3d = ui->factor_3d->value();
|
Settings::values.factor_3d = ui->factor_3d->value();
|
||||||
|
@ -132,19 +149,69 @@ void ConfigureEnhancements::ApplyConfiguration() {
|
||||||
Settings::values.pp_shader_name =
|
Settings::values.pp_shader_name =
|
||||||
ui->shader_combobox->itemText(ui->shader_combobox->currentIndex()).toStdString();
|
ui->shader_combobox->itemText(ui->shader_combobox->currentIndex()).toStdString();
|
||||||
}
|
}
|
||||||
Settings::values.filter_mode = ui->toggle_linear_filter->isChecked();
|
|
||||||
Settings::values.texture_filter_name = ui->texture_filter_combobox->currentText().toStdString();
|
|
||||||
Settings::values.layout_option =
|
|
||||||
static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
|
|
||||||
Settings::values.swap_screen = ui->swap_screen->isChecked();
|
|
||||||
Settings::values.upright_screen = ui->upright_screen->isChecked();
|
|
||||||
Settings::values.large_screen_proportion = ui->large_screen_proportion->value();
|
Settings::values.large_screen_proportion = ui->large_screen_proportion->value();
|
||||||
Settings::values.dump_textures = ui->toggle_dump_textures->isChecked();
|
|
||||||
Settings::values.custom_textures = ui->toggle_custom_textures->isChecked();
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.filter_mode,
|
||||||
Settings::values.preload_textures = ui->toggle_preload_textures->isChecked();
|
ui->toggle_linear_filter, linear_filter);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(
|
||||||
|
&Settings::values.texture_filter_name, ui->texture_filter_combobox,
|
||||||
|
[this](int index) { return ui->texture_filter_combobox->itemText(index).toStdString(); });
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.layout_option, ui->layout_combobox);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.swap_screen, ui->toggle_swap_screen,
|
||||||
|
swap_screen);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.upright_screen,
|
||||||
|
ui->toggle_upright_screen, upright_screen);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.dump_textures,
|
||||||
|
ui->toggle_dump_textures, dump_textures);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.custom_textures,
|
||||||
|
ui->toggle_custom_textures, custom_textures);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.preload_textures,
|
||||||
|
ui->toggle_preload_textures, preload_textures);
|
||||||
|
|
||||||
Settings::values.bg_red = static_cast<float>(bg_color.redF());
|
Settings::values.bg_red = static_cast<float>(bg_color.redF());
|
||||||
Settings::values.bg_green = static_cast<float>(bg_color.greenF());
|
Settings::values.bg_green = static_cast<float>(bg_color.greenF());
|
||||||
Settings::values.bg_blue = static_cast<float>(bg_color.blueF());
|
Settings::values.bg_blue = static_cast<float>(bg_color.blueF());
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigureEnhancements::~ConfigureEnhancements() {}
|
void ConfigureEnhancements::SetupPerGameUI() {
|
||||||
|
// Block the global settings if a game is currently running that overrides them
|
||||||
|
if (Settings::IsConfiguringGlobal()) {
|
||||||
|
ui->widget_resolution->setEnabled(Settings::values.resolution_factor.UsingGlobal());
|
||||||
|
ui->widget_texture_filter->setEnabled(Settings::values.texture_filter_name.UsingGlobal());
|
||||||
|
ui->toggle_linear_filter->setEnabled(Settings::values.filter_mode.UsingGlobal());
|
||||||
|
ui->toggle_swap_screen->setEnabled(Settings::values.swap_screen.UsingGlobal());
|
||||||
|
ui->toggle_upright_screen->setEnabled(Settings::values.upright_screen.UsingGlobal());
|
||||||
|
ui->toggle_dump_textures->setEnabled(Settings::values.dump_textures.UsingGlobal());
|
||||||
|
ui->toggle_custom_textures->setEnabled(Settings::values.custom_textures.UsingGlobal());
|
||||||
|
ui->toggle_preload_textures->setEnabled(Settings::values.preload_textures.UsingGlobal());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->stereo_group->setVisible(false);
|
||||||
|
ui->widget_shader->setVisible(false);
|
||||||
|
ui->bg_color_group->setVisible(false);
|
||||||
|
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->toggle_linear_filter, Settings::values.filter_mode,
|
||||||
|
linear_filter);
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->toggle_swap_screen, Settings::values.swap_screen,
|
||||||
|
swap_screen);
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->toggle_upright_screen,
|
||||||
|
Settings::values.upright_screen, upright_screen);
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->toggle_dump_textures,
|
||||||
|
Settings::values.dump_textures, dump_textures);
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->toggle_custom_textures,
|
||||||
|
Settings::values.custom_textures, custom_textures);
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->toggle_preload_textures,
|
||||||
|
Settings::values.preload_textures, preload_textures);
|
||||||
|
|
||||||
|
ConfigurationShared::SetColoredComboBox(
|
||||||
|
ui->resolution_factor_combobox, ui->widget_resolution,
|
||||||
|
static_cast<u32>(Settings::values.resolution_factor.GetValue(true)));
|
||||||
|
|
||||||
|
ConfigurationShared::SetColoredComboBox(ui->texture_filter_combobox, ui->widget_texture_filter,
|
||||||
|
0);
|
||||||
|
|
||||||
|
ConfigurationShared::SetColoredComboBox(
|
||||||
|
ui->layout_combobox, ui->widget_layout,
|
||||||
|
static_cast<u32>(Settings::values.layout_option.GetValue(true)));
|
||||||
|
}
|
||||||
|
|
|
@ -12,6 +12,10 @@ namespace Settings {
|
||||||
enum class StereoRenderOption : u32;
|
enum class StereoRenderOption : u32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace ConfigurationShared {
|
||||||
|
enum class CheckState;
|
||||||
|
}
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class ConfigureEnhancements;
|
class ConfigureEnhancements;
|
||||||
}
|
}
|
||||||
|
@ -27,10 +31,18 @@ public:
|
||||||
void RetranslateUI();
|
void RetranslateUI();
|
||||||
void SetConfiguration();
|
void SetConfiguration();
|
||||||
|
|
||||||
|
void SetupPerGameUI();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateShaders(Settings::StereoRenderOption stereo_option);
|
void updateShaders(Settings::StereoRenderOption stereo_option);
|
||||||
void updateTextureFilter(int index);
|
void updateTextureFilter(int index);
|
||||||
|
|
||||||
std::unique_ptr<Ui::ConfigureEnhancements> ui;
|
std::unique_ptr<Ui::ConfigureEnhancements> ui;
|
||||||
|
ConfigurationShared::CheckState linear_filter;
|
||||||
|
ConfigurationShared::CheckState swap_screen;
|
||||||
|
ConfigurationShared::CheckState upright_screen;
|
||||||
|
ConfigurationShared::CheckState dump_textures;
|
||||||
|
ConfigurationShared::CheckState custom_textures;
|
||||||
|
ConfigurationShared::CheckState preload_textures;
|
||||||
QColor bg_color;
|
QColor bg_color;
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>400</width>
|
<width>400</width>
|
||||||
<height>634</height>
|
<height>657</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
|
@ -27,9 +27,22 @@
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||||
<item>
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_resolution" native="true">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="resolution_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Internal Resolution</string>
|
<string>Internal Resolution</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -95,6 +108,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="toggle_linear_filter">
|
<widget class="QCheckBox" name="toggle_linear_filter">
|
||||||
|
@ -104,9 +118,22 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_shader" native="true">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="shader_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Post-Processing Shader</string>
|
<string>Post-Processing Shader</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -116,11 +143,25 @@
|
||||||
<widget class="QComboBox" name="shader_combobox"/>
|
<widget class="QComboBox" name="shader_combobox"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_texture_filter" native="true">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_5">
|
<widget class="QLabel" name="texture_filter_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Texture Filter</string>
|
<string>Texture Filter</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -130,12 +171,13 @@
|
||||||
<widget class="QComboBox" name="texture_filter_combobox"/>
|
<widget class="QComboBox" name="texture_filter_combobox"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="stereo_group">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Stereoscopy</string>
|
<string>Stereoscopy</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -236,15 +278,28 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="layoutBox">
|
<widget class="QGroupBox" name="layout_group">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Layout</string>
|
<string>Layout</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<widget class="QWidget" name="widget_layout" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="screen_layout_group">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label1">
|
<widget class="QLabel" name="layout_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Screen Layout:</string>
|
<string>Screen Layout:</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -280,23 +335,37 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="swap_screen">
|
<widget class="QCheckBox" name="toggle_swap_screen">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Swap Screens</string>
|
<string>Swap Screens</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="upright_screen">
|
<widget class="QCheckBox" name="toggle_upright_screen">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Rotate Screens Upright</string>
|
<string>Rotate Screens Upright</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
<widget class="QWidget" name="" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="proportion_layout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -307,20 +376,34 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="large_screen_proportion">
|
<widget class="QDoubleSpinBox" name="large_screen_proportion">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>1</number>
|
<double>1.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>16</number>
|
<double>16.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
<property name="value">
|
||||||
<number>4</number>
|
<double>4.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
<widget class="QWidget" name="bg_color_group" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="bg_color_group_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="bg_label">
|
<widget class="QLabel" name="bg_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -339,6 +422,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -406,8 +490,8 @@
|
||||||
<tabstop>factor_3d</tabstop>
|
<tabstop>factor_3d</tabstop>
|
||||||
<tabstop>mono_rendering_eye</tabstop>
|
<tabstop>mono_rendering_eye</tabstop>
|
||||||
<tabstop>layout_combobox</tabstop>
|
<tabstop>layout_combobox</tabstop>
|
||||||
<tabstop>swap_screen</tabstop>
|
<tabstop>toggle_swap_screen</tabstop>
|
||||||
<tabstop>upright_screen</tabstop>
|
<tabstop>toggle_upright_screen</tabstop>
|
||||||
<tabstop>large_screen_proportion</tabstop>
|
<tabstop>large_screen_proportion</tabstop>
|
||||||
<tabstop>bg_button</tabstop>
|
<tabstop>bg_button</tabstop>
|
||||||
<tabstop>toggle_custom_textures</tabstop>
|
<tabstop>toggle_custom_textures</tabstop>
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "citra_qt/configuration/config.h"
|
#include "citra_qt/configuration/config.h"
|
||||||
#include "citra_qt/configuration/configure_audio.h"
|
#include "citra_qt/configuration/configure_audio.h"
|
||||||
#include "citra_qt/configuration/configure_debug.h"
|
#include "citra_qt/configuration/configure_debug.h"
|
||||||
|
#include "citra_qt/configuration/configure_enhancements.h"
|
||||||
#include "citra_qt/configuration/configure_general.h"
|
#include "citra_qt/configuration/configure_general.h"
|
||||||
#include "citra_qt/configuration/configure_graphics.h"
|
#include "citra_qt/configuration/configure_graphics.h"
|
||||||
#include "citra_qt/configuration/configure_per_game.h"
|
#include "citra_qt/configuration/configure_per_game.h"
|
||||||
|
@ -30,6 +31,7 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const QString
|
||||||
|
|
||||||
audio_tab = std::make_unique<ConfigureAudio>(this);
|
audio_tab = std::make_unique<ConfigureAudio>(this);
|
||||||
general_tab = std::make_unique<ConfigureGeneral>(this);
|
general_tab = std::make_unique<ConfigureGeneral>(this);
|
||||||
|
enhancements_tab = std::make_unique<ConfigureEnhancements>(this);
|
||||||
graphics_tab = std::make_unique<ConfigureGraphics>(this);
|
graphics_tab = std::make_unique<ConfigureGraphics>(this);
|
||||||
system_tab = std::make_unique<ConfigureSystem>(this);
|
system_tab = std::make_unique<ConfigureSystem>(this);
|
||||||
debug_tab = std::make_unique<ConfigureDebug>(this);
|
debug_tab = std::make_unique<ConfigureDebug>(this);
|
||||||
|
@ -38,6 +40,7 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const QString
|
||||||
|
|
||||||
ui->tabWidget->addTab(general_tab.get(), tr("General"));
|
ui->tabWidget->addTab(general_tab.get(), tr("General"));
|
||||||
ui->tabWidget->addTab(system_tab.get(), tr("System"));
|
ui->tabWidget->addTab(system_tab.get(), tr("System"));
|
||||||
|
ui->tabWidget->addTab(enhancements_tab.get(), tr("Enhancements"));
|
||||||
ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics"));
|
ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics"));
|
||||||
ui->tabWidget->addTab(audio_tab.get(), tr("Audio"));
|
ui->tabWidget->addTab(audio_tab.get(), tr("Audio"));
|
||||||
ui->tabWidget->addTab(debug_tab.get(), tr("Debug"));
|
ui->tabWidget->addTab(debug_tab.get(), tr("Debug"));
|
||||||
|
@ -81,10 +84,12 @@ void ConfigurePerGame::ResetDefaults() {
|
||||||
void ConfigurePerGame::ApplyConfiguration() {
|
void ConfigurePerGame::ApplyConfiguration() {
|
||||||
general_tab->ApplyConfiguration();
|
general_tab->ApplyConfiguration();
|
||||||
system_tab->ApplyConfiguration();
|
system_tab->ApplyConfiguration();
|
||||||
|
enhancements_tab->ApplyConfiguration();
|
||||||
graphics_tab->ApplyConfiguration();
|
graphics_tab->ApplyConfiguration();
|
||||||
audio_tab->ApplyConfiguration();
|
audio_tab->ApplyConfiguration();
|
||||||
debug_tab->ApplyConfiguration();
|
debug_tab->ApplyConfiguration();
|
||||||
|
|
||||||
|
Settings::Apply();
|
||||||
Settings::LogSettings();
|
Settings::LogSettings();
|
||||||
|
|
||||||
game_config->Save();
|
game_config->Save();
|
||||||
|
|
|
@ -15,6 +15,7 @@ class System;
|
||||||
|
|
||||||
class ConfigureAudio;
|
class ConfigureAudio;
|
||||||
class ConfigureGeneral;
|
class ConfigureGeneral;
|
||||||
|
class ConfigureEnhancements;
|
||||||
class ConfigureGraphics;
|
class ConfigureGraphics;
|
||||||
class ConfigureSystem;
|
class ConfigureSystem;
|
||||||
class ConfigureDebug;
|
class ConfigureDebug;
|
||||||
|
@ -65,6 +66,7 @@ private:
|
||||||
|
|
||||||
std::unique_ptr<ConfigureAudio> audio_tab;
|
std::unique_ptr<ConfigureAudio> audio_tab;
|
||||||
std::unique_ptr<ConfigureGeneral> general_tab;
|
std::unique_ptr<ConfigureGeneral> general_tab;
|
||||||
|
std::unique_ptr<ConfigureEnhancements> enhancements_tab;
|
||||||
std::unique_ptr<ConfigureGraphics> graphics_tab;
|
std::unique_ptr<ConfigureGraphics> graphics_tab;
|
||||||
std::unique_ptr<ConfigureSystem> system_tab;
|
std::unique_ptr<ConfigureSystem> system_tab;
|
||||||
std::unique_ptr<ConfigureDebug> debug_tab;
|
std::unique_ptr<ConfigureDebug> debug_tab;
|
||||||
|
|
|
@ -20,6 +20,17 @@
|
||||||
|
|
||||||
namespace Settings {
|
namespace Settings {
|
||||||
|
|
||||||
|
std::string_view GetAudioEmulationName(AudioEmulation emulation) {
|
||||||
|
switch (emulation) {
|
||||||
|
case AudioEmulation::HLE:
|
||||||
|
return "HLE";
|
||||||
|
case AudioEmulation::LLE:
|
||||||
|
return "LLE";
|
||||||
|
case AudioEmulation::LLEMultithreaded:
|
||||||
|
return "LLE Multithreaded";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Values values = {};
|
Values values = {};
|
||||||
static bool configuring_global = true;
|
static bool configuring_global = true;
|
||||||
|
|
||||||
|
@ -86,17 +97,6 @@ void LogSettings() {
|
||||||
LOG_INFO(Config, "{}: {}", name, value);
|
LOG_INFO(Config, "{}: {}", name, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto to_string = [](AudioEmulation emulation) -> std::string_view {
|
|
||||||
switch (emulation) {
|
|
||||||
case AudioEmulation::HLE:
|
|
||||||
return "HLE";
|
|
||||||
case AudioEmulation::LLE:
|
|
||||||
return "LLE";
|
|
||||||
case AudioEmulation::LLEMultithreaded:
|
|
||||||
return "LLE Multithreaded";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
LOG_INFO(Config, "Citra Configuration:");
|
LOG_INFO(Config, "Citra Configuration:");
|
||||||
log_setting("Core_UseCpuJit", values.use_cpu_jit.GetValue());
|
log_setting("Core_UseCpuJit", values.use_cpu_jit.GetValue());
|
||||||
log_setting("Core_CPUClockPercentage", values.cpu_clock_percentage.GetValue());
|
log_setting("Core_CPUClockPercentage", values.cpu_clock_percentage.GetValue());
|
||||||
|
@ -125,7 +125,7 @@ void LogSettings() {
|
||||||
log_setting("Utility_DumpTextures", values.dump_textures.GetValue());
|
log_setting("Utility_DumpTextures", values.dump_textures.GetValue());
|
||||||
log_setting("Utility_CustomTextures", values.custom_textures.GetValue());
|
log_setting("Utility_CustomTextures", values.custom_textures.GetValue());
|
||||||
log_setting("Utility_UseDiskShaderCache", values.use_disk_shader_cache.GetValue());
|
log_setting("Utility_UseDiskShaderCache", values.use_disk_shader_cache.GetValue());
|
||||||
log_setting("Audio_Emulation", to_string(values.audio_emulation.GetValue()));
|
log_setting("Audio_Emulation", GetAudioEmulationName(values.audio_emulation.GetValue()));
|
||||||
log_setting("Audio_OutputEngine", values.sink_id.GetValue());
|
log_setting("Audio_OutputEngine", values.sink_id.GetValue());
|
||||||
log_setting("Audio_EnableAudioStretching", values.enable_audio_stretching.GetValue());
|
log_setting("Audio_EnableAudioStretching", values.enable_audio_stretching.GetValue());
|
||||||
log_setting("Audio_OutputDevice", values.audio_device_id.GetValue());
|
log_setting("Audio_OutputDevice", values.audio_device_id.GetValue());
|
||||||
|
@ -207,6 +207,9 @@ void RestoreGlobalState(bool is_powered_on) {
|
||||||
values.filter_mode.SetGlobal(true);
|
values.filter_mode.SetGlobal(true);
|
||||||
values.pp_shader_name.SetGlobal(true);
|
values.pp_shader_name.SetGlobal(true);
|
||||||
values.anaglyph_shader_name.SetGlobal(true);
|
values.anaglyph_shader_name.SetGlobal(true);
|
||||||
|
values.dump_textures.SetGlobal(true);
|
||||||
|
values.custom_textures.SetGlobal(true);
|
||||||
|
values.preload_textures.SetGlobal(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadProfile(int index) {
|
void LoadProfile(int index) {
|
||||||
|
|
|
@ -54,9 +54,16 @@ enum class StereoRenderOption : u32 {
|
||||||
|
|
||||||
// Which eye to render when 3d is off. 800px wide mode could be added here in the future, when
|
// Which eye to render when 3d is off. 800px wide mode could be added here in the future, when
|
||||||
// implemented
|
// implemented
|
||||||
enum class MonoRenderOption : u32 { LeftEye = 0, RightEye = 1 };
|
enum class MonoRenderOption : u32 {
|
||||||
|
LeftEye = 0,
|
||||||
|
RightEye = 1,
|
||||||
|
};
|
||||||
|
|
||||||
enum class AudioEmulation : u32 { HLE = 0, LLE = 1, LLEMultithreaded = 2 };
|
enum class AudioEmulation : u32 {
|
||||||
|
HLE = 0,
|
||||||
|
LLE = 1,
|
||||||
|
LLEMultithreaded = 2,
|
||||||
|
};
|
||||||
|
|
||||||
namespace NativeButton {
|
namespace NativeButton {
|
||||||
|
|
||||||
|
@ -361,38 +368,6 @@ protected:
|
||||||
Type custom{}; ///< The custom value of the setting
|
Type custom{}; ///< The custom value of the setting
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* The InputSetting class allows for getting a reference to either the global or custom members.
|
|
||||||
* This is required as we cannot easily modify the values of user-defined types within containers
|
|
||||||
* using the SetValue() member function found in the Setting class. The primary purpose of this
|
|
||||||
* class is to store an array of 10 PlayerInput structs for both the global and custom setting and
|
|
||||||
* allows for easily accessing and modifying both settings.
|
|
||||||
*/
|
|
||||||
template <typename Type>
|
|
||||||
class InputSetting final {
|
|
||||||
public:
|
|
||||||
InputSetting() = default;
|
|
||||||
explicit InputSetting(Type val) : Setting<Type>(val) {}
|
|
||||||
~InputSetting() = default;
|
|
||||||
void SetGlobal(bool to_global) {
|
|
||||||
use_global = to_global;
|
|
||||||
}
|
|
||||||
[[nodiscard]] bool UsingGlobal() const {
|
|
||||||
return use_global;
|
|
||||||
}
|
|
||||||
[[nodiscard]] Type& GetValue(bool need_global = false) {
|
|
||||||
if (use_global || need_global) {
|
|
||||||
return global;
|
|
||||||
}
|
|
||||||
return custom;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool use_global{true}; ///< The setting's global state
|
|
||||||
Type global{}; ///< The setting
|
|
||||||
Type custom{}; ///< The custom setting value
|
|
||||||
};
|
|
||||||
|
|
||||||
struct InputProfile {
|
struct InputProfile {
|
||||||
std::string name;
|
std::string name;
|
||||||
std::array<std::string, NativeButton::NumButtons> buttons;
|
std::array<std::string, NativeButton::NumButtons> buttons;
|
||||||
|
@ -485,9 +460,9 @@ struct Values {
|
||||||
SwitchableSetting<std::string> pp_shader_name{"none (builtin)", "pp_shader_name"};
|
SwitchableSetting<std::string> pp_shader_name{"none (builtin)", "pp_shader_name"};
|
||||||
SwitchableSetting<std::string> anaglyph_shader_name{"dubois (builtin)", "anaglyph_shader_name"};
|
SwitchableSetting<std::string> anaglyph_shader_name{"dubois (builtin)", "anaglyph_shader_name"};
|
||||||
|
|
||||||
Setting<bool> dump_textures{false, "dump_textures"};
|
SwitchableSetting<bool> dump_textures{false, "dump_textures"};
|
||||||
Setting<bool> custom_textures{false, "custom_textures"};
|
SwitchableSetting<bool> custom_textures{false, "custom_textures"};
|
||||||
Setting<bool> preload_textures{false, "preload_textures"};
|
SwitchableSetting<bool> preload_textures{false, "preload_textures"};
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
bool audio_muted;
|
bool audio_muted;
|
||||||
|
|
Reference in New Issue