summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Wollnashorn2023-06-12 15:59:44 +0200
committerGravatar Wollnashorn2023-06-13 03:21:01 +0200
commit0eacf547c0733f39e11515e7aedf300d0cd06e99 (patch)
treeccf36bffb6da566eb6c9faae067ea5c694da655d
parentMerge pull request #10718 from liamwhite/buffered-io (diff)
downloadyuzu-0eacf547c0733f39e11515e7aedf300d0cd06e99.tar.gz
yuzu-0eacf547c0733f39e11515e7aedf300d0cd06e99.tar.xz
yuzu-0eacf547c0733f39e11515e7aedf300d0cd06e99.zip
video_core: Option to apply anisotropic filtering for all mipmap modes
-rw-r--r--src/common/settings.cpp1
-rw-r--r--src/common/settings.h2
-rw-r--r--src/video_core/textures/texture.cpp3
-rw-r--r--src/yuzu/configuration/config.cpp2
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp11
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.h1
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.ui13
-rw-r--r--src/yuzu_cmd/config.cpp1
-rw-r--r--src/yuzu_cmd/default_ini.h4
9 files changed, 37 insertions, 1 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 9ff3edabb..da5cca589 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -236,6 +236,7 @@ void RestoreGlobalState(bool is_powered_on) {
236 values.bg_blue.SetGlobal(true); 236 values.bg_blue.SetGlobal(true);
237 values.enable_compute_pipelines.SetGlobal(true); 237 values.enable_compute_pipelines.SetGlobal(true);
238 values.use_video_framerate.SetGlobal(true); 238 values.use_video_framerate.SetGlobal(true);
239 values.use_aggressive_anisotropic_filtering.SetGlobal(true);
239 240
240 // System 241 // System
241 values.language_index.SetGlobal(true); 242 values.language_index.SetGlobal(true);
diff --git a/src/common/settings.h b/src/common/settings.h
index 9682281b0..78ca73e42 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -483,6 +483,8 @@ struct Values {
483 AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3, 483 AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3,
484 "astc_recompression"}; 484 "astc_recompression"};
485 SwitchableSetting<bool> use_video_framerate{false, "use_video_framerate"}; 485 SwitchableSetting<bool> use_video_framerate{false, "use_video_framerate"};
486 SwitchableSetting<bool> use_aggressive_anisotropic_filtering{
487 false, "use_aggressive_anisotropic_filtering"};
486 488
487 SwitchableSetting<u8> bg_red{0, "bg_red"}; 489 SwitchableSetting<u8> bg_red{0, "bg_red"};
488 SwitchableSetting<u8> bg_green{0, "bg_green"}; 490 SwitchableSetting<u8> bg_green{0, "bg_green"};
diff --git a/src/video_core/textures/texture.cpp b/src/video_core/textures/texture.cpp
index 4a80a59f9..12372a004 100644
--- a/src/video_core/textures/texture.cpp
+++ b/src/video_core/textures/texture.cpp
@@ -62,7 +62,8 @@ std::array<float, 4> TSCEntry::BorderColor() const noexcept {
62} 62}
63 63
64float TSCEntry::MaxAnisotropy() const noexcept { 64float TSCEntry::MaxAnisotropy() const noexcept {
65 if (max_anisotropy == 0 && mipmap_filter != TextureMipmapFilter::Linear) { 65 if (max_anisotropy == 0 && (mipmap_filter != TextureMipmapFilter::Linear &&
66 !Settings::values.use_aggressive_anisotropic_filtering)) {
66 return 1.0f; 67 return 1.0f;
67 } 68 }
68 const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue(); 69 const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue();
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index bac9dff90..27839daaa 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -761,6 +761,7 @@ void Config::ReadRendererValues() {
761 ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); 761 ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
762 ReadGlobalSetting(Settings::values.enable_compute_pipelines); 762 ReadGlobalSetting(Settings::values.enable_compute_pipelines);
763 ReadGlobalSetting(Settings::values.use_video_framerate); 763 ReadGlobalSetting(Settings::values.use_video_framerate);
764 ReadGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering);
764 ReadGlobalSetting(Settings::values.bg_red); 765 ReadGlobalSetting(Settings::values.bg_red);
765 ReadGlobalSetting(Settings::values.bg_green); 766 ReadGlobalSetting(Settings::values.bg_green);
766 ReadGlobalSetting(Settings::values.bg_blue); 767 ReadGlobalSetting(Settings::values.bg_blue);
@@ -1417,6 +1418,7 @@ void Config::SaveRendererValues() {
1417 WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); 1418 WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
1418 WriteGlobalSetting(Settings::values.enable_compute_pipelines); 1419 WriteGlobalSetting(Settings::values.enable_compute_pipelines);
1419 WriteGlobalSetting(Settings::values.use_video_framerate); 1420 WriteGlobalSetting(Settings::values.use_video_framerate);
1421 WriteGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering);
1420 WriteGlobalSetting(Settings::values.bg_red); 1422 WriteGlobalSetting(Settings::values.bg_red);
1421 WriteGlobalSetting(Settings::values.bg_green); 1423 WriteGlobalSetting(Settings::values.bg_green);
1422 WriteGlobalSetting(Settings::values.bg_blue); 1424 WriteGlobalSetting(Settings::values.bg_blue);
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index 0463ac8b9..3dce73968 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -31,6 +31,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
31 ui->use_asynchronous_shaders->setEnabled(runtime_lock); 31 ui->use_asynchronous_shaders->setEnabled(runtime_lock);
32 ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); 32 ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
33 ui->enable_compute_pipelines_checkbox->setEnabled(runtime_lock); 33 ui->enable_compute_pipelines_checkbox->setEnabled(runtime_lock);
34 ui->use_aggressive_anisotropic_filtering->setEnabled(runtime_lock);
34 35
35 ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); 36 ui->async_present->setChecked(Settings::values.async_presentation.GetValue());
36 ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); 37 ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue());
@@ -43,6 +44,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
43 ui->enable_compute_pipelines_checkbox->setChecked( 44 ui->enable_compute_pipelines_checkbox->setChecked(
44 Settings::values.enable_compute_pipelines.GetValue()); 45 Settings::values.enable_compute_pipelines.GetValue());
45 ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.GetValue()); 46 ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.GetValue());
47 ui->use_aggressive_anisotropic_filtering->setChecked(
48 Settings::values.use_aggressive_anisotropic_filtering.GetValue());
46 49
47 if (Settings::IsConfiguringGlobal()) { 50 if (Settings::IsConfiguringGlobal()) {
48 ui->gpu_accuracy->setCurrentIndex( 51 ui->gpu_accuracy->setCurrentIndex(
@@ -94,6 +97,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
94 enable_compute_pipelines); 97 enable_compute_pipelines);
95 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate, 98 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate,
96 ui->use_video_framerate_checkbox, use_video_framerate); 99 ui->use_video_framerate_checkbox, use_video_framerate);
100 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_aggressive_anisotropic_filtering,
101 ui->use_aggressive_anisotropic_filtering,
102 use_aggressive_anisotropic_filtering);
97} 103}
98 104
99void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { 105void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {
@@ -130,6 +136,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
130 Settings::values.enable_compute_pipelines.UsingGlobal()); 136 Settings::values.enable_compute_pipelines.UsingGlobal());
131 ui->use_video_framerate_checkbox->setEnabled( 137 ui->use_video_framerate_checkbox->setEnabled(
132 Settings::values.use_video_framerate.UsingGlobal()); 138 Settings::values.use_video_framerate.UsingGlobal());
139 ui->use_aggressive_anisotropic_filtering->setEnabled(
140 Settings::values.use_aggressive_anisotropic_filtering.UsingGlobal());
133 141
134 return; 142 return;
135 } 143 }
@@ -157,6 +165,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
157 ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox, 165 ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox,
158 Settings::values.use_video_framerate, 166 Settings::values.use_video_framerate,
159 use_video_framerate); 167 use_video_framerate);
168 ConfigurationShared::SetColoredTristate(ui->use_aggressive_anisotropic_filtering,
169 Settings::values.use_aggressive_anisotropic_filtering,
170 use_aggressive_anisotropic_filtering);
160 ConfigurationShared::SetColoredComboBox( 171 ConfigurationShared::SetColoredComboBox(
161 ui->gpu_accuracy, ui->label_gpu_accuracy, 172 ui->gpu_accuracy, ui->label_gpu_accuracy,
162 static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); 173 static_cast<int>(Settings::values.gpu_accuracy.GetValue(true)));
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h
index a4dc8ceb0..4b52e5d61 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.h
+++ b/src/yuzu/configuration/configure_graphics_advanced.h
@@ -48,6 +48,7 @@ private:
48 ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache; 48 ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache;
49 ConfigurationShared::CheckState enable_compute_pipelines; 49 ConfigurationShared::CheckState enable_compute_pipelines;
50 ConfigurationShared::CheckState use_video_framerate; 50 ConfigurationShared::CheckState use_video_framerate;
51 ConfigurationShared::CheckState use_aggressive_anisotropic_filtering;
51 52
52 const Core::System& system; 53 const Core::System& system;
53}; 54};
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui
index e7f0ef6be..06771c080 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.ui
+++ b/src/yuzu/configuration/configure_graphics_advanced.ui
@@ -260,6 +260,19 @@ Compute pipelines are always enabled on all other drivers.</string>
260 </layout> 260 </layout>
261 </widget> 261 </widget>
262 </item> 262 </item>
263 <item>
264 <widget class="QCheckBox" name="use_aggressive_anisotropic_filtering">
265 <property name="toolTip">
266 <string>Enable this option for a more aggressive approach to applying Anisotropic Filtering to textures.
267By toggling this, Anisotropic Filtering is added to textures with both nearest and linear mipmapping modes.
268This may result in improved visual quality for a wider range of textures, but can also introduce artifacts in
269some titles.</string>
270 </property>
271 <property name="text">
272 <string>Apply Anisotropic Filtering for all mipmap modes</string>
273 </property>
274 </widget>
275 </item>
263 </layout> 276 </layout>
264 </widget> 277 </widget>
265 </item> 278 </item>
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index c5bc472ca..f5a5364da 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -321,6 +321,7 @@ void Config::ReadValues() {
321 ReadSetting("Renderer", Settings::values.astc_recompression); 321 ReadSetting("Renderer", Settings::values.astc_recompression);
322 ReadSetting("Renderer", Settings::values.use_fast_gpu_time); 322 ReadSetting("Renderer", Settings::values.use_fast_gpu_time);
323 ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); 323 ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache);
324 ReadSetting("Renderer", Settings::values.use_aggressive_anisotropic_filtering);
324 325
325 ReadSetting("Renderer", Settings::values.bg_red); 326 ReadSetting("Renderer", Settings::values.bg_red);
326 ReadSetting("Renderer", Settings::values.bg_green); 327 ReadSetting("Renderer", Settings::values.bg_green);
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index 911d461e4..f12e2dfc9 100644
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -325,6 +325,10 @@ aspect_ratio =
325# 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x 325# 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x
326max_anisotropy = 326max_anisotropy =
327 327
328# Apply Anisotropic Filtering to all mipmap modes.
329# 0 (default): Off, 1: On
330use_aggressive_anisotropic_filtering =
331
328# Whether to enable VSync or not. 332# Whether to enable VSync or not.
329# OpenGL: Values other than 0 enable VSync 333# OpenGL: Values other than 0 enable VSync
330# Vulkan: FIFO is selected if the requested mode is not supported by the driver. 334# Vulkan: FIFO is selected if the requested mode is not supported by the driver.