From 1a98dc298ec753e9e70aa26f7c8f10f094bc3cf2 Mon Sep 17 00:00:00 2001 From: pineappleEA Date: Tue, 13 Jun 2023 23:39:30 +0200 Subject: [PATCH] early-access version 3672 --- README.md | 2 +- src/android/app/src/main/AndroidManifest.xml | 1 + .../app/src/main/res/xml/locales_config.xml | 17 +++++++++++++++++ src/common/settings.cpp | 1 + src/common/settings.h | 2 ++ src/video_core/textures/texture.cpp | 4 +++- src/yuzu/configuration/config.cpp | 2 ++ .../configure_graphics_advanced.cpp | 11 +++++++++++ .../configuration/configure_graphics_advanced.h | 1 + .../configure_graphics_advanced.ui | 13 +++++++++++++ src/yuzu_cmd/config.cpp | 1 + src/yuzu_cmd/default_ini.h | 4 ++++ 12 files changed, 57 insertions(+), 2 deletions(-) create mode 100755 src/android/app/src/main/res/xml/locales_config.xml diff --git a/README.md b/README.md index 19e8fb519..7baf1c186 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 3671. +This is the source code for early-access 3672. ## Legal Notice diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml index 1e92098ec..55f62b4b9 100755 --- a/src/android/app/src/main/AndroidManifest.xml +++ b/src/android/app/src/main/AndroidManifest.xml @@ -24,6 +24,7 @@ SPDX-License-Identifier: GPL-3.0-or-later android:hasFragileUserData="true" android:supportsRtl="true" android:isGame="true" + android:localeConfig="@xml/locales_config" android:banner="@drawable/tv_banner" android:extractNativeLibs="true" android:fullBackupContent="@xml/data_extraction_rules" diff --git a/src/android/app/src/main/res/xml/locales_config.xml b/src/android/app/src/main/res/xml/locales_config.xml new file mode 100755 index 000000000..51b88d9dc --- /dev/null +++ b/src/android/app/src/main/res/xml/locales_config.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 838a0c96d..da40aaec5 100755 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -245,6 +245,7 @@ void RestoreGlobalState(bool is_powered_on) { values.bg_blue.SetGlobal(true); values.enable_compute_pipelines.SetGlobal(true); values.use_video_framerate.SetGlobal(true); + values.use_aggressive_anisotropic_filtering.SetGlobal(true); // System values.language_index.SetGlobal(true); diff --git a/src/common/settings.h b/src/common/settings.h index d2859dc81..2145fe981 100755 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -483,6 +483,8 @@ struct Values { AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3, "astc_recompression"}; SwitchableSetting use_video_framerate{false, "use_video_framerate"}; + SwitchableSetting use_aggressive_anisotropic_filtering{ + false, "use_aggressive_anisotropic_filtering"}; SwitchableSetting bg_red{0, "bg_red"}; SwitchableSetting bg_green{0, "bg_green"}; diff --git a/src/video_core/textures/texture.cpp b/src/video_core/textures/texture.cpp index 3705ea6a5..65e92a3ef 100755 --- a/src/video_core/textures/texture.cpp +++ b/src/video_core/textures/texture.cpp @@ -62,7 +62,9 @@ std::array TSCEntry::BorderColor() const noexcept { } float TSCEntry::MaxAnisotropy() const noexcept { - if (max_anisotropy == 0 && mipmap_filter != TextureMipmapFilter::Linear) { + if (max_anisotropy == 0 && (depth_compare_enabled.Value() || + (mipmap_filter != TextureMipmapFilter::Linear && + !Settings::values.use_aggressive_anisotropic_filtering))) { return 1.0f; } const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue(); diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 63cbd90ad..97cba033d 100755 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -761,6 +761,7 @@ void Config::ReadRendererValues() { ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); ReadGlobalSetting(Settings::values.enable_compute_pipelines); ReadGlobalSetting(Settings::values.use_video_framerate); + ReadGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering); ReadGlobalSetting(Settings::values.bg_red); ReadGlobalSetting(Settings::values.bg_green); ReadGlobalSetting(Settings::values.bg_blue); @@ -1417,6 +1418,7 @@ void Config::SaveRendererValues() { WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); WriteGlobalSetting(Settings::values.enable_compute_pipelines); WriteGlobalSetting(Settings::values.use_video_framerate); + WriteGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering); WriteGlobalSetting(Settings::values.bg_red); WriteGlobalSetting(Settings::values.bg_green); WriteGlobalSetting(Settings::values.bg_blue); diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index e9f0f98ef..af6a65962 100755 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp @@ -31,6 +31,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { ui->use_asynchronous_shaders->setEnabled(runtime_lock); ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); ui->enable_compute_pipelines_checkbox->setEnabled(runtime_lock); + ui->use_aggressive_anisotropic_filtering->setEnabled(runtime_lock); ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); @@ -43,6 +44,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { ui->enable_compute_pipelines_checkbox->setChecked( Settings::values.enable_compute_pipelines.GetValue()); ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.GetValue()); + ui->use_aggressive_anisotropic_filtering->setChecked( + Settings::values.use_aggressive_anisotropic_filtering.GetValue()); if (Settings::IsConfiguringGlobal()) { ui->gpu_accuracy->setCurrentIndex( @@ -94,6 +97,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { enable_compute_pipelines); ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate, ui->use_video_framerate_checkbox, use_video_framerate); + ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_aggressive_anisotropic_filtering, + ui->use_aggressive_anisotropic_filtering, + use_aggressive_anisotropic_filtering); } void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { @@ -130,6 +136,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { Settings::values.enable_compute_pipelines.UsingGlobal()); ui->use_video_framerate_checkbox->setEnabled( Settings::values.use_video_framerate.UsingGlobal()); + ui->use_aggressive_anisotropic_filtering->setEnabled( + Settings::values.use_aggressive_anisotropic_filtering.UsingGlobal()); return; } @@ -157,6 +165,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox, Settings::values.use_video_framerate, use_video_framerate); + ConfigurationShared::SetColoredTristate(ui->use_aggressive_anisotropic_filtering, + Settings::values.use_aggressive_anisotropic_filtering, + use_aggressive_anisotropic_filtering); ConfigurationShared::SetColoredComboBox( ui->gpu_accuracy, ui->label_gpu_accuracy, static_cast(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 9c9829620..8f3e7ae69 100755 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h @@ -48,6 +48,7 @@ private: ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache; ConfigurationShared::CheckState enable_compute_pipelines; ConfigurationShared::CheckState use_video_framerate; + ConfigurationShared::CheckState use_aggressive_anisotropic_filtering; const Core::System& system; }; diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index babe2d21c..ff21aaf04 100755 --- 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. + + + + Enable this option for a more aggressive approach to applying Anisotropic Filtering to textures. +By toggling this, Anisotropic Filtering is added to textures with both nearest and linear mipmapping modes. +This may result in improved visual quality for a wider range of textures, but can also introduce artifacts in +some titles. + + + Apply Anisotropic Filtering for all mipmap modes + + + diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 43f725d31..e4424cc78 100755 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -321,6 +321,7 @@ void Config::ReadValues() { ReadSetting("Renderer", Settings::values.astc_recompression); ReadSetting("Renderer", Settings::values.use_fast_gpu_time); ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); + ReadSetting("Renderer", Settings::values.use_aggressive_anisotropic_filtering); ReadSetting("Renderer", Settings::values.bg_red); ReadSetting("Renderer", Settings::values.bg_green); diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index 1e9549384..1bded0f61 100755 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h @@ -325,6 +325,10 @@ aspect_ratio = # 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x max_anisotropy = +# Apply Anisotropic Filtering to all mipmap modes. +# 0 (default): Off, 1: On +use_aggressive_anisotropic_filtering = + # Whether to enable VSync or not. # OpenGL: Values other than 0 enable VSync # Vulkan: FIFO is selected if the requested mode is not supported by the driver.