Create an "Advanced" tab in the graphics configuration tab and add anisotropic filtering levels.
This commit is contained in:
		| @@ -430,6 +430,7 @@ struct Values { | |||||||
|  |  | ||||||
|     float resolution_factor; |     float resolution_factor; | ||||||
|     int aspect_ratio; |     int aspect_ratio; | ||||||
|  |     int max_anisotropy; | ||||||
|     bool use_frame_limit; |     bool use_frame_limit; | ||||||
|     u16 frame_limit; |     u16 frame_limit; | ||||||
|     bool use_disk_shader_cache; |     bool use_disk_shader_cache; | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ OGLSampler SamplerCacheOpenGL::CreateSampler(const Tegra::Texture::TSCEntry& tsc | |||||||
|         glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY, tsc.GetMaxAnisotropy()); |         glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY, tsc.GetMaxAnisotropy()); | ||||||
|     } else if (GLAD_GL_EXT_texture_filter_anisotropic) { |     } else if (GLAD_GL_EXT_texture_filter_anisotropic) { | ||||||
|         glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY_EXT, tsc.GetMaxAnisotropy()); |         glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY_EXT, tsc.GetMaxAnisotropy()); | ||||||
|     } else if (tsc.GetMaxAnisotropy() != 1) { |     } else { | ||||||
|         LOG_WARNING(Render_OpenGL, "Anisotropy not supported by host GPU driver"); |         LOG_WARNING(Render_OpenGL, "Anisotropy not supported by host GPU driver"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ | |||||||
| #include "common/assert.h" | #include "common/assert.h" | ||||||
| #include "common/bit_field.h" | #include "common/bit_field.h" | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
|  | #include "core/settings.h" | ||||||
|  |  | ||||||
| namespace Tegra::Texture { | namespace Tegra::Texture { | ||||||
|  |  | ||||||
| @@ -294,6 +295,14 @@ enum class TextureMipmapFilter : u32 { | |||||||
|     Linear = 3, |     Linear = 3, | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | enum class Anisotropy { | ||||||
|  |     Default, | ||||||
|  |     Filter2x, | ||||||
|  |     Filter4x, | ||||||
|  |     Filter8x, | ||||||
|  |     Filter16x, | ||||||
|  | }; | ||||||
|  |  | ||||||
| struct TSCEntry { | struct TSCEntry { | ||||||
|     union { |     union { | ||||||
|         struct { |         struct { | ||||||
| @@ -328,7 +337,20 @@ struct TSCEntry { | |||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     float GetMaxAnisotropy() const { |     float GetMaxAnisotropy() const { | ||||||
|         return static_cast<float>(1U << max_anisotropy); |         switch (static_cast<Anisotropy>(Settings::values.max_anisotropy)) { | ||||||
|  |         case Anisotropy::Default: | ||||||
|  |             return static_cast<float>(1U << max_anisotropy); | ||||||
|  |         case Anisotropy::Filter2x: | ||||||
|  |             return static_cast<float>(2U << max_anisotropy); | ||||||
|  |         case Anisotropy::Filter4x: | ||||||
|  |             return static_cast<float>(4U << max_anisotropy); | ||||||
|  |         case Anisotropy::Filter8x: | ||||||
|  |             return static_cast<float>(8U << max_anisotropy); | ||||||
|  |         case Anisotropy::Filter16x: | ||||||
|  |             return static_cast<float>(16U << max_anisotropy); | ||||||
|  |         default: | ||||||
|  |             return static_cast<float>(1U << max_anisotropy); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     float GetMinLod() const { |     float GetMinLod() const { | ||||||
|   | |||||||
| @@ -42,6 +42,9 @@ add_executable(yuzu | |||||||
|     configuration/configure_graphics.cpp |     configuration/configure_graphics.cpp | ||||||
|     configuration/configure_graphics.h |     configuration/configure_graphics.h | ||||||
|     configuration/configure_graphics.ui |     configuration/configure_graphics.ui | ||||||
|  |     configuration/configure_graphics_advanced.cpp | ||||||
|  |     configuration/configure_graphics_advanced.h | ||||||
|  |     configuration/configure_graphics_advanced.ui | ||||||
|     configuration/configure_hotkeys.cpp |     configuration/configure_hotkeys.cpp | ||||||
|     configuration/configure_hotkeys.h |     configuration/configure_hotkeys.h | ||||||
|     configuration/configure_hotkeys.ui |     configuration/configure_hotkeys.ui | ||||||
|   | |||||||
| @@ -631,6 +631,7 @@ void Config::ReadRendererValues() { | |||||||
|     Settings::values.resolution_factor = |     Settings::values.resolution_factor = | ||||||
|         ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat(); |         ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat(); | ||||||
|     Settings::values.aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt(); |     Settings::values.aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt(); | ||||||
|  |     Settings::values.max_anisotropy = ReadSetting(QStringLiteral("max_anisotropy"), 0).toInt(); | ||||||
|     Settings::values.use_frame_limit = |     Settings::values.use_frame_limit = | ||||||
|         ReadSetting(QStringLiteral("use_frame_limit"), true).toBool(); |         ReadSetting(QStringLiteral("use_frame_limit"), true).toBool(); | ||||||
|     Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toInt(); |     Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toInt(); | ||||||
| @@ -1067,6 +1068,7 @@ void Config::SaveRendererValues() { | |||||||
|     WriteSetting(QStringLiteral("resolution_factor"), |     WriteSetting(QStringLiteral("resolution_factor"), | ||||||
|                  static_cast<double>(Settings::values.resolution_factor), 1.0); |                  static_cast<double>(Settings::values.resolution_factor), 1.0); | ||||||
|     WriteSetting(QStringLiteral("aspect_ratio"), Settings::values.aspect_ratio, 0); |     WriteSetting(QStringLiteral("aspect_ratio"), Settings::values.aspect_ratio, 0); | ||||||
|  |     WriteSetting(QStringLiteral("max_anisotropy"), Settings::values.max_anisotropy, 0); | ||||||
|     WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true); |     WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true); | ||||||
|     WriteSetting(QStringLiteral("frame_limit"), Settings::values.frame_limit, 100); |     WriteSetting(QStringLiteral("frame_limit"), Settings::values.frame_limit, 100); | ||||||
|     WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values.use_disk_shader_cache, |     WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values.use_disk_shader_cache, | ||||||
|   | |||||||
| @@ -83,6 +83,11 @@ | |||||||
|          <string>Graphics</string> |          <string>Graphics</string> | ||||||
|         </attribute> |         </attribute> | ||||||
|        </widget> |        </widget> | ||||||
|  |        <widget class="ConfigureGraphicsAdvanced" name="graphicsAdvancedTab"> | ||||||
|  |         <attribute name="title"> | ||||||
|  |          <string>GraphicsAdvanced</string> | ||||||
|  |         </attribute> | ||||||
|  |        </widget> | ||||||
|        <widget class="ConfigureAudio" name="audioTab"> |        <widget class="ConfigureAudio" name="audioTab"> | ||||||
|         <attribute name="title"> |         <attribute name="title"> | ||||||
|          <string>Audio</string> |          <string>Audio</string> | ||||||
| @@ -159,6 +164,12 @@ | |||||||
|    <header>configuration/configure_graphics.h</header> |    <header>configuration/configure_graphics.h</header> | ||||||
|    <container>1</container> |    <container>1</container> | ||||||
|   </customwidget> |   </customwidget> | ||||||
|  |   <customwidget> | ||||||
|  |    <class>ConfigureGraphicsAdvanced</class> | ||||||
|  |    <extends>QWidget</extends> | ||||||
|  |    <header>configuration/configure_graphics_advanced.h</header> | ||||||
|  |    <container>1</container> | ||||||
|  |   </customwidget> | ||||||
|   <customwidget> |   <customwidget> | ||||||
|    <class>ConfigureWeb</class> |    <class>ConfigureWeb</class> | ||||||
|    <extends>QWidget</extends> |    <extends>QWidget</extends> | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ void ConfigureDialog::ApplyConfiguration() { | |||||||
|     ui->inputTab->ApplyConfiguration(); |     ui->inputTab->ApplyConfiguration(); | ||||||
|     ui->hotkeysTab->ApplyConfiguration(registry); |     ui->hotkeysTab->ApplyConfiguration(registry); | ||||||
|     ui->graphicsTab->ApplyConfiguration(); |     ui->graphicsTab->ApplyConfiguration(); | ||||||
|  |     ui->graphicsAdvancedTab->ApplyConfiguration(); | ||||||
|     ui->audioTab->ApplyConfiguration(); |     ui->audioTab->ApplyConfiguration(); | ||||||
|     ui->debugTab->ApplyConfiguration(); |     ui->debugTab->ApplyConfiguration(); | ||||||
|     ui->webTab->ApplyConfiguration(); |     ui->webTab->ApplyConfiguration(); | ||||||
| @@ -76,7 +77,7 @@ void ConfigureDialog::PopulateSelectionList() { | |||||||
|     const std::array<std::pair<QString, QList<QWidget*>>, 5> items{ |     const std::array<std::pair<QString, QList<QWidget*>>, 5> items{ | ||||||
|         {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}}, |         {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}}, | ||||||
|          {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, |          {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, | ||||||
|          {tr("Graphics"), {ui->graphicsTab}}, |          {tr("Graphics"), {ui->graphicsTab, ui->graphicsAdvancedTab}}, | ||||||
|          {tr("Audio"), {ui->audioTab}}, |          {tr("Audio"), {ui->audioTab}}, | ||||||
|          {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, |          {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, | ||||||
|     }; |     }; | ||||||
| @@ -105,6 +106,7 @@ void ConfigureDialog::UpdateVisibleTabs() { | |||||||
|         {ui->inputTab, tr("Input")}, |         {ui->inputTab, tr("Input")}, | ||||||
|         {ui->hotkeysTab, tr("Hotkeys")}, |         {ui->hotkeysTab, tr("Hotkeys")}, | ||||||
|         {ui->graphicsTab, tr("Graphics")}, |         {ui->graphicsTab, tr("Graphics")}, | ||||||
|  |         {ui->graphicsAdvancedTab, tr("Advanced")}, | ||||||
|         {ui->audioTab, tr("Audio")}, |         {ui->audioTab, tr("Audio")}, | ||||||
|         {ui->debugTab, tr("Debug")}, |         {ui->debugTab, tr("Debug")}, | ||||||
|         {ui->webTab, tr("Web")}, |         {ui->webTab, tr("Web")}, | ||||||
|   | |||||||
| @@ -100,13 +100,8 @@ void ConfigureGraphics::SetConfiguration() { | |||||||
|     ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio); |     ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio); | ||||||
|     ui->use_disk_shader_cache->setEnabled(runtime_lock); |     ui->use_disk_shader_cache->setEnabled(runtime_lock); | ||||||
|     ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache); |     ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache); | ||||||
|     ui->use_accurate_gpu_emulation->setChecked(Settings::values.use_accurate_gpu_emulation); |  | ||||||
|     ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); |     ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); | ||||||
|     ui->use_asynchronous_gpu_emulation->setChecked(Settings::values.use_asynchronous_gpu_emulation); |     ui->use_asynchronous_gpu_emulation->setChecked(Settings::values.use_asynchronous_gpu_emulation); | ||||||
|     ui->use_vsync->setEnabled(runtime_lock); |  | ||||||
|     ui->use_vsync->setChecked(Settings::values.use_vsync); |  | ||||||
|     ui->force_30fps_mode->setEnabled(runtime_lock); |  | ||||||
|     ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode); |  | ||||||
|     UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green, |     UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green, | ||||||
|                                                  Settings::values.bg_blue)); |                                                  Settings::values.bg_blue)); | ||||||
|     UpdateDeviceComboBox(); |     UpdateDeviceComboBox(); | ||||||
| @@ -119,11 +114,8 @@ void ConfigureGraphics::ApplyConfiguration() { | |||||||
|         ToResolutionFactor(static_cast<Resolution>(ui->resolution_factor_combobox->currentIndex())); |         ToResolutionFactor(static_cast<Resolution>(ui->resolution_factor_combobox->currentIndex())); | ||||||
|     Settings::values.aspect_ratio = ui->aspect_ratio_combobox->currentIndex(); |     Settings::values.aspect_ratio = ui->aspect_ratio_combobox->currentIndex(); | ||||||
|     Settings::values.use_disk_shader_cache = ui->use_disk_shader_cache->isChecked(); |     Settings::values.use_disk_shader_cache = ui->use_disk_shader_cache->isChecked(); | ||||||
|     Settings::values.use_accurate_gpu_emulation = ui->use_accurate_gpu_emulation->isChecked(); |  | ||||||
|     Settings::values.use_asynchronous_gpu_emulation = |     Settings::values.use_asynchronous_gpu_emulation = | ||||||
|         ui->use_asynchronous_gpu_emulation->isChecked(); |         ui->use_asynchronous_gpu_emulation->isChecked(); | ||||||
|     Settings::values.use_vsync = ui->use_vsync->isChecked(); |  | ||||||
|     Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked(); |  | ||||||
|     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()); | ||||||
|   | |||||||
| @@ -84,30 +84,6 @@ | |||||||
|           </property> |           </property> | ||||||
|          </widget> |          </widget> | ||||||
|         </item> |         </item> | ||||||
|         <item> |  | ||||||
|          <widget class="QCheckBox" name="use_vsync"> |  | ||||||
|           <property name="toolTip"> |  | ||||||
|            <string>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</string> |  | ||||||
|           </property> |  | ||||||
|           <property name="text"> |  | ||||||
|            <string>Use VSync (OpenGL only)</string> |  | ||||||
|           </property> |  | ||||||
|          </widget> |  | ||||||
|         </item> |  | ||||||
|         <item> |  | ||||||
|          <widget class="QCheckBox" name="use_accurate_gpu_emulation"> |  | ||||||
|           <property name="text"> |  | ||||||
|            <string>Use accurate GPU emulation (slow)</string> |  | ||||||
|           </property> |  | ||||||
|          </widget> |  | ||||||
|         </item> |  | ||||||
|         <item> |  | ||||||
|          <widget class="QCheckBox" name="force_30fps_mode"> |  | ||||||
|           <property name="text"> |  | ||||||
|            <string>Force 30 FPS mode</string> |  | ||||||
|           </property> |  | ||||||
|          </widget> |  | ||||||
|         </item> |  | ||||||
|         <item> |         <item> | ||||||
|          <layout class="QHBoxLayout" name="horizontalLayout_2"> |          <layout class="QHBoxLayout" name="horizontalLayout_2"> | ||||||
|           <item> |           <item> | ||||||
|   | |||||||
							
								
								
									
										48
									
								
								src/yuzu/configuration/configure_graphics_advanced.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/yuzu/configuration/configure_graphics_advanced.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | // Copyright 2020 yuzu Emulator Project | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #include "core/core.h" | ||||||
|  | #include "core/settings.h" | ||||||
|  | #include "ui_configure_graphics_advanced.h" | ||||||
|  | #include "yuzu/configuration/configure_graphics_advanced.h" | ||||||
|  |  | ||||||
|  | ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(QWidget* parent) | ||||||
|  |     : QWidget(parent), ui(new Ui::ConfigureGraphicsAdvanced) { | ||||||
|  |  | ||||||
|  |     ui->setupUi(this); | ||||||
|  |  | ||||||
|  |     SetConfiguration(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; | ||||||
|  |  | ||||||
|  | void ConfigureGraphicsAdvanced::SetConfiguration() { | ||||||
|  |     const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); | ||||||
|  |     ui->use_accurate_gpu_emulation->setChecked(Settings::values.use_accurate_gpu_emulation); | ||||||
|  |     ui->use_vsync->setEnabled(runtime_lock); | ||||||
|  |     ui->use_vsync->setChecked(Settings::values.use_vsync); | ||||||
|  |     ui->force_30fps_mode->setEnabled(runtime_lock); | ||||||
|  |     ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode); | ||||||
|  |     ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | ||||||
|  |     ui->anisotropic_filtering_combobox->setCurrentIndex(Settings::values.max_anisotropy); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void ConfigureGraphicsAdvanced::ApplyConfiguration() { | ||||||
|  |     Settings::values.use_accurate_gpu_emulation = ui->use_accurate_gpu_emulation->isChecked(); | ||||||
|  |     Settings::values.use_vsync = ui->use_vsync->isChecked(); | ||||||
|  |     Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked(); | ||||||
|  |     Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { | ||||||
|  |     if (event->type() == QEvent::LanguageChange) { | ||||||
|  |         RetranslateUI(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     QWidget::changeEvent(event); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void ConfigureGraphicsAdvanced::RetranslateUI() { | ||||||
|  |     ui->retranslateUi(this); | ||||||
|  | } | ||||||
							
								
								
									
										30
									
								
								src/yuzu/configuration/configure_graphics_advanced.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/yuzu/configuration/configure_graphics_advanced.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | // Copyright 2020 yuzu Emulator Project | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include <memory> | ||||||
|  | #include <QWidget> | ||||||
|  |  | ||||||
|  | namespace Ui { | ||||||
|  | class ConfigureGraphicsAdvanced; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | class ConfigureGraphicsAdvanced : public QWidget { | ||||||
|  |     Q_OBJECT | ||||||
|  |  | ||||||
|  | public: | ||||||
|  |     explicit ConfigureGraphicsAdvanced(QWidget* parent = nullptr); | ||||||
|  |     ~ConfigureGraphicsAdvanced() override; | ||||||
|  |  | ||||||
|  |     void ApplyConfiguration(); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     void changeEvent(QEvent* event) override; | ||||||
|  |     void RetranslateUI(); | ||||||
|  |  | ||||||
|  |     void SetConfiguration(); | ||||||
|  |  | ||||||
|  |     std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui; | ||||||
|  | }; | ||||||
							
								
								
									
										111
									
								
								src/yuzu/configuration/configure_graphics_advanced.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/yuzu/configuration/configure_graphics_advanced.ui
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <ui version="4.0"> | ||||||
|  |  <class>ConfigureGraphicsAdvanced</class> | ||||||
|  |  <widget class="QWidget" name="ConfigureGraphicsAdvanced"> | ||||||
|  |   <property name="geometry"> | ||||||
|  |    <rect> | ||||||
|  |     <x>0</x> | ||||||
|  |     <y>0</y> | ||||||
|  |     <width>400</width> | ||||||
|  |     <height>321</height> | ||||||
|  |    </rect> | ||||||
|  |   </property> | ||||||
|  |   <property name="windowTitle"> | ||||||
|  |    <string>Form</string> | ||||||
|  |   </property> | ||||||
|  |   <layout class="QVBoxLayout" name="verticalLayout_1"> | ||||||
|  |    <item> | ||||||
|  |     <layout class="QVBoxLayout" name="verticalLayout_2"> | ||||||
|  |      <item> | ||||||
|  |       <widget class="QGroupBox" name="groupBox_1"> | ||||||
|  |        <property name="title"> | ||||||
|  |         <string>Advanced Graphics Settings</string> | ||||||
|  |        </property> | ||||||
|  |        <layout class="QVBoxLayout" name="verticalLayout_3"> | ||||||
|  |         <item> | ||||||
|  |          <widget class="QCheckBox" name="use_accurate_gpu_emulation"> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string>Use accurate GPU emulation (slow)</string> | ||||||
|  |           </property> | ||||||
|  |          </widget> | ||||||
|  |         </item> | ||||||
|  |         <item> | ||||||
|  |          <widget class="QCheckBox" name="use_vsync"> | ||||||
|  |           <property name="toolTip"> | ||||||
|  |            <string>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</string> | ||||||
|  |           </property> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string>Use VSync (OpenGL only)</string> | ||||||
|  |           </property> | ||||||
|  |          </widget> | ||||||
|  |         </item> | ||||||
|  |         <item> | ||||||
|  |          <widget class="QCheckBox" name="force_30fps_mode"> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string>Force 30 FPS mode</string> | ||||||
|  |           </property> | ||||||
|  |          </widget> | ||||||
|  |         </item> | ||||||
|  |         <item> | ||||||
|  |          <layout class="QHBoxLayout" name="horizontalLayout_1"> | ||||||
|  |           <item> | ||||||
|  |            <widget class="QLabel" name="af_label"> | ||||||
|  |             <property name="text"> | ||||||
|  |              <string>Anisotropic Filtering:</string> | ||||||
|  |             </property> | ||||||
|  |            </widget> | ||||||
|  |           </item> | ||||||
|  |           <item> | ||||||
|  |            <widget class="QComboBox" name="anisotropic_filtering_combobox"> | ||||||
|  |             <item> | ||||||
|  |              <property name="text"> | ||||||
|  |               <string>Default</string> | ||||||
|  |              </property> | ||||||
|  |             </item> | ||||||
|  |             <item> | ||||||
|  |              <property name="text"> | ||||||
|  |               <string>2x</string> | ||||||
|  |              </property> | ||||||
|  |             </item> | ||||||
|  |             <item> | ||||||
|  |              <property name="text"> | ||||||
|  |               <string>4x</string> | ||||||
|  |              </property> | ||||||
|  |             </item> | ||||||
|  |             <item> | ||||||
|  |              <property name="text"> | ||||||
|  |               <string>8x</string> | ||||||
|  |              </property> | ||||||
|  |             </item> | ||||||
|  |             <item> | ||||||
|  |              <property name="text"> | ||||||
|  |               <string>16x</string> | ||||||
|  |              </property> | ||||||
|  |             </item> | ||||||
|  |            </widget> | ||||||
|  |           </item> | ||||||
|  |          </layout> | ||||||
|  |         </item> | ||||||
|  |        </layout> | ||||||
|  |       </widget> | ||||||
|  |      </item> | ||||||
|  |     </layout> | ||||||
|  |    </item> | ||||||
|  |    <item> | ||||||
|  |     <spacer name="verticalSpacer"> | ||||||
|  |      <property name="orientation"> | ||||||
|  |       <enum>Qt::Vertical</enum> | ||||||
|  |      </property> | ||||||
|  |      <property name="sizeHint" stdset="0"> | ||||||
|  |       <size> | ||||||
|  |        <width>20</width> | ||||||
|  |        <height>40</height> | ||||||
|  |       </size> | ||||||
|  |      </property> | ||||||
|  |     </spacer> | ||||||
|  |    </item> | ||||||
|  |   </layout> | ||||||
|  |  </widget> | ||||||
|  |  <resources/> | ||||||
|  |  <connections/> | ||||||
|  | </ui> | ||||||
| @@ -381,6 +381,8 @@ void Config::ReadValues() { | |||||||
|         static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0)); |         static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0)); | ||||||
|     Settings::values.aspect_ratio = |     Settings::values.aspect_ratio = | ||||||
|         static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); |         static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); | ||||||
|  |     Settings::values.max_anisotropy = | ||||||
|  |         static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0)); | ||||||
|     Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true); |     Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true); | ||||||
|     Settings::values.frame_limit = |     Settings::values.frame_limit = | ||||||
|         static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100)); |         static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100)); | ||||||
|   | |||||||
| @@ -126,6 +126,10 @@ resolution_factor = | |||||||
| # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window | # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window | ||||||
| aspect_ratio = | aspect_ratio = | ||||||
|  |  | ||||||
|  | # Anisotropic filtering | ||||||
|  | # 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x | ||||||
|  | max_anisotropy = | ||||||
|  |  | ||||||
| # Whether to enable V-Sync (caps the framerate at 60FPS) or not. | # Whether to enable V-Sync (caps the framerate at 60FPS) or not. | ||||||
| # 0 (default): Off, 1: On | # 0 (default): Off, 1: On | ||||||
| use_vsync = | use_vsync = | ||||||
|   | |||||||
| @@ -120,6 +120,8 @@ void Config::ReadValues() { | |||||||
|         static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0)); |         static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0)); | ||||||
|     Settings::values.aspect_ratio = |     Settings::values.aspect_ratio = | ||||||
|         static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); |         static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); | ||||||
|  |     Settings::values.max_anisotropy = | ||||||
|  |         static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0)); | ||||||
|     Settings::values.use_frame_limit = false; |     Settings::values.use_frame_limit = false; | ||||||
|     Settings::values.frame_limit = 100; |     Settings::values.frame_limit = 100; | ||||||
|     Settings::values.use_disk_shader_cache = |     Settings::values.use_disk_shader_cache = | ||||||
|   | |||||||
| @@ -30,6 +30,10 @@ resolution_factor = | |||||||
| # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window | # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window | ||||||
| aspect_ratio = | aspect_ratio = | ||||||
|  |  | ||||||
|  | # Anisotropic filtering | ||||||
|  | # 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x | ||||||
|  | max_anisotropy = | ||||||
|  |  | ||||||
| # Whether to enable V-Sync (caps the framerate at 60FPS) or not. | # Whether to enable V-Sync (caps the framerate at 60FPS) or not. | ||||||
| # 0 (default): Off, 1: On | # 0 (default): Off, 1: On | ||||||
| use_vsync = | use_vsync = | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user