From 91b043259110967f78a3316be4e163623e33cf32 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 26 Nov 2025 02:16:37 +0100 Subject: [PATCH] [video_core, settings] Allow to turn of aniso levels completely, provide levels of aniso upto x64 (#3019) Never in my lifetime will I ever need to revise anisotropy levels; I hope :) Signed-off-by: lizzie lizzie@eden-emu.dev Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3019 Reviewed-by: MaranBr Reviewed-by: Caio Oliveira Co-authored-by: lizzie Co-committed-by: lizzie --- docs/user/Graphics.md | 6 ++++ .../app/src/main/res/values-ar/strings.xml | 11 ++++--- .../app/src/main/res/values-ckb/strings.xml | 11 ++++--- .../app/src/main/res/values-cs/strings.xml | 11 ++++--- .../app/src/main/res/values-de/strings.xml | 11 ++++--- .../app/src/main/res/values-es/strings.xml | 11 ++++--- .../app/src/main/res/values-fa/strings.xml | 11 ++++--- .../app/src/main/res/values-fr/strings.xml | 11 ++++--- .../app/src/main/res/values-he/strings.xml | 11 ++++--- .../app/src/main/res/values-hu/strings.xml | 11 ++++--- .../app/src/main/res/values-id/strings.xml | 11 ++++--- .../app/src/main/res/values-it/strings.xml | 11 ++++--- .../app/src/main/res/values-ja/strings.xml | 11 ++++--- .../app/src/main/res/values-ko/strings.xml | 11 ++++--- .../app/src/main/res/values-nb/strings.xml | 11 ++++--- .../app/src/main/res/values-pl/strings.xml | 11 ++++--- .../src/main/res/values-pt-rBR/strings.xml | 11 ++++--- .../src/main/res/values-pt-rPT/strings.xml | 11 ++++--- .../app/src/main/res/values-ru/strings.xml | 11 ++++--- .../app/src/main/res/values-sr/strings.xml | 11 ++++--- .../app/src/main/res/values-uk/strings.xml | 11 ++++--- .../app/src/main/res/values-vi/strings.xml | 11 ++++--- .../src/main/res/values-zh-rCN/strings.xml | 11 ++++--- .../src/main/res/values-zh-rTW/strings.xml | 11 ++++--- .../app/src/main/res/values/arrays.xml | 11 ++++--- .../app/src/main/res/values/strings.xml | 11 ++++--- src/common/settings_enums.h | 2 +- src/qt_common/config/shared_translation.cpp | 3 ++ src/video_core/textures/texture.cpp | 31 ++++++++++++------- 29 files changed, 205 insertions(+), 112 deletions(-) diff --git a/docs/user/Graphics.md b/docs/user/Graphics.md index ccbc6cea4c..7100030ade 100644 --- a/docs/user/Graphics.md +++ b/docs/user/Graphics.md @@ -43,6 +43,12 @@ Various graphical filters exist - each of them aimed at a specific target/image - **Pros**: Offers decent pixel-art upscaling. - **Cons**: Only works for pixel-art. +### Anisotropy values + +The anisotropy value is (value game wants + the set value); **Default** will use the native anisotropy value as it would be on hardware. **Automatic** sets it according to screen resolution. Turning off anisotropy is not recommended as it can break a myriad of games, however it is provided in the name of flexibility. + +Values from x2, x4, x8, x16, x32 up to x64 values are provided. This should be enough to not need to revise those values in my lifetime ever again. + ### External While stock shaders offer a basic subset of options for most users, programs such as [ReShade](https://github.com/crosire/reshade) offer a more flexible experience. In addition to that users can also seek out modifications (mods) for enhancing visual experience (60 FPS mods, HDR, etc). diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 42d579b265..deeff43fda 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -1016,10 +1016,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None خلفيات سوداء diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 732e558a38..4c6bc8d2db 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -727,10 +727,13 @@ تاریک - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None پاشبنەمای ڕەش diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index 00c0c3fe15..9763895732 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -693,10 +693,13 @@ Tmavé - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Černá pozadí diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index edafa86687..102e1a8566 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -912,10 +912,13 @@ Wirklich fortfahren? cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Schwarze Hintergründe diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index cfb881c1bd..ea77c8c4d6 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -975,10 +975,13 @@ cubeb - x2 - x4 - x8 - x16 + x2 + x4 + x8 + x16 + x32 + x64 + None Fondos oscuros diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index 51c7871f66..345230bbe2 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -861,10 +861,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None پس‌زمینه مشکی diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index 817e135e49..7a421103b2 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -988,10 +988,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Arrière-plan noir diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 987c69b8e4..5119e47493 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -776,10 +776,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None רקעים שחורים diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index 6257b7819d..5db3416c62 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -875,10 +875,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Fekete háttér diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 5c05e6b01d..0240520a93 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -929,10 +929,13 @@ Cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Gunakan Latar Belakang Hitam diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index ea599b8d57..3b6a0e23c8 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -988,10 +988,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Sfondi neri diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index c250f2145b..01a2bd2cae 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -778,10 +778,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None 完全な黒を使用 diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index eec91a13f9..af02f19c3c 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -837,10 +837,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None 검정 배경 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 94a37994ae..e691f6b233 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -740,10 +740,13 @@ Mørk - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Svart bakgrunn diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 232142fe26..dca27f67f3 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -1012,10 +1012,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Czarne tła diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 531b4d515c..1d85e663b5 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -976,10 +976,13 @@ uma tentativa de mapeamento automático cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Planos de fundo pretos diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 18c7d2292e..b45ec0f87e 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -890,10 +890,13 @@ uma tentativa de mapeamento automático cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Plano de fundo preto diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 301f7a67a3..e73391f980 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -1010,10 +1010,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Чёрный фон diff --git a/src/android/app/src/main/res/values-sr/strings.xml b/src/android/app/src/main/res/values-sr/strings.xml index a44f05bb9c..4c1ca2f024 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -888,10 +888,13 @@ Цубеб - - - - 16к + x2 + x4 + x8 + x16 + x32 + x64 + None Црна позадина diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index f9dcf2b4c6..aca7e399e6 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -1012,10 +1012,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Чорний фон diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index 9dc13a2759..b54c416737 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -740,10 +740,13 @@ Tối - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Nền tối diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index abb3c94d7f..b5240a2c74 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -984,10 +984,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None 使用黑色背景 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 59d0d5c366..d42a7f64c9 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -984,10 +984,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None 黑色背景 diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 12dec24219..b1aab5351d 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -487,10 +487,13 @@ @string/auto @string/slider_default - @string/multiplier_two - @string/multiplier_four - @string/multiplier_eight - @string/multiplier_sixteen + @string/multiplier_x2 + @string/multiplier_x4 + @string/multiplier_x8 + @string/multiplier_x16 + @string/multiplier_x32 + @string/multiplier_x64 + @string/multiplier_none 0 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 2dcee90404..f0e012e6b7 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -1055,10 +1055,13 @@ cubeb - 2x - 4x - 8x - 16x + x2 + x4 + x8 + x16 + x32 + x64 + None Black backgrounds diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index 3ba2144efc..c2d443ce1c 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -126,7 +126,7 @@ ENUM(TimeZone, Auto, Default, Cet, Cst6Cdt, Cuba, Eet, Egypt, Eire, Est, Est5Edt GmtPlusZero, GmtMinusZero, GmtZero, Greenwich, Hongkong, Hst, Iceland, Iran, Israel, Jamaica, Japan, Kwajalein, Libya, Met, Mst, Mst7Mdt, Navajo, Nz, NzChat, Poland, Portugal, Prc, Pst8Pdt, Roc, Rok, Singapore, Turkey, Uct, Universal, Utc, WSu, Wet, Zulu); -ENUM(AnisotropyMode, Automatic, Default, X2, X4, X8, X16); +ENUM(AnisotropyMode, Automatic, Default, X2, X4, X8, X16, X32, X64, None); ENUM(AstcDecodeMode, Cpu, Gpu, CpuAsynchronous); ENUM(AstcRecompression, Uncompressed, Bc1, Bc3); ENUM(VSyncMode, Immediate, Mailbox, Fifo, FifoRelaxed); diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp index f8295e61c0..9fc254eed2 100644 --- a/src/qt_common/config/shared_translation.cpp +++ b/src/qt_common/config/shared_translation.cpp @@ -596,6 +596,9 @@ std::unique_ptr ComboboxEnumeration(QObject* parent) PAIR(AnisotropyMode, X4, tr("4x")), PAIR(AnisotropyMode, X8, tr("8x")), PAIR(AnisotropyMode, X16, tr("16x")), + PAIR(AnisotropyMode, X32, tr("32x")), + PAIR(AnisotropyMode, X64, tr("64x")), + PAIR(AnisotropyMode, None, tr("None")), }}); translations->insert( {Settings::EnumMetadata::Index(), diff --git a/src/video_core/textures/texture.cpp b/src/video_core/textures/texture.cpp index b51441bdfe..d32872e35d 100644 --- a/src/video_core/textures/texture.cpp +++ b/src/video_core/textures/texture.cpp @@ -69,20 +69,29 @@ float TSCEntry::MaxAnisotropy() const noexcept { const bool has_regular_lods = min_lod_clamp == 0 && max_lod_clamp >= 256; const bool is_bilinear_filter = min_filter == TextureFilter::Linear && reduction_filter == SamplerReduction::WeightedAverage; - if (max_anisotropy == 0 && (!is_suitable_mipmap_filter || !has_regular_lods || - !is_bilinear_filter || depth_compare_enabled)) { + if (max_anisotropy == 0 && (!is_suitable_mipmap_filter || !has_regular_lods || !is_bilinear_filter || depth_compare_enabled)) return 1.0f; - } - const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue(); + s32 added_anisotropic{}; - if (anisotropic_settings == Settings::AnisotropyMode::Automatic) { - added_anisotropic = Settings::values.resolution_info.up_scale >> - Settings::values.resolution_info.down_shift; - added_anisotropic = (std::max)(added_anisotropic - 1, 0); - } else { - added_anisotropic = static_cast(Settings::values.max_anisotropy.GetValue()) - 1U; + auto const anisotropic_settings = Settings::values.max_anisotropy.GetValue(); + switch (anisotropic_settings) { + case Settings::AnisotropyMode::Default: + case Settings::AnisotropyMode::X2: + case Settings::AnisotropyMode::X4: + case Settings::AnisotropyMode::X8: + case Settings::AnisotropyMode::X16: + case Settings::AnisotropyMode::X32: + case Settings::AnisotropyMode::X64: + added_anisotropic = u32(anisotropic_settings) - 1U; + break; + case Settings::AnisotropyMode::Automatic: + added_anisotropic = Settings::values.resolution_info.up_scale >> Settings::values.resolution_info.down_shift; + added_anisotropic = (std::max)(added_anisotropic - 1U, 0U); + break; + case Settings::AnisotropyMode::None: + return 1.0f; //No use of anisotropy } - return static_cast(1U << (max_anisotropy + added_anisotropic)); + return float(1U << (max_anisotropy + added_anisotropic)); } } // namespace Tegra::Texture