From 96c8a7ee1f2fdc3302cd6b54d1b7c93faabcacab Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Tue, 17 Jan 2023 02:23:12 -0500 Subject: [PATCH] Android: Expose texture filtering options --- .../features/settings/model/IntSetting.java | 3 ++ .../ui/SettingsFragmentPresenter.java | 33 +++++++++++++++++-- .../app/src/main/res/values/arrays.xml | 14 +++++++- .../app/src/main/res/values/strings.xml | 7 ++++ 4 files changed, 54 insertions(+), 3 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java index 46d9b1fd9e..17eee510bb 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java @@ -61,6 +61,9 @@ public enum IntSetting implements AbstractIntSetting GFX_SHADER_COMPILATION_MODE(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "ShaderCompilationMode", 0), + GFX_ENHANCE_FORCE_TEXTURE_FILTERING(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS, + "ForceTextureFiltering", 0), + GFX_ENHANCE_MAX_ANISOTROPY(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS, "MaxAnisotropy", 0), diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index 0a65174b11..46beddcd78 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -806,6 +806,37 @@ public final class SettingsFragmentPresenter sl.add(new SingleChoiceSetting(mContext, IntSetting.GFX_ENHANCE_MAX_ANISOTROPY, R.string.anisotropic_filtering, R.string.anisotropic_filtering_description, R.array.anisotropicFilteringEntries, R.array.anisotropicFilteringValues)); + AbstractIntSetting filteringSetting = new AbstractIntSetting() + { + @Override public int getInt(Settings settings) + { + return IntSetting.GFX_ENHANCE_FORCE_TEXTURE_FILTERING.getInt(settings); + } + + @Override public void setInt(Settings settings, int newValue) + { + BooleanSetting.GFX_ENHANCE_FORCE_FILTERING.setBoolean(settings, (newValue > 0)); + IntSetting.GFX_ENHANCE_FORCE_TEXTURE_FILTERING.setInt(settings, newValue); + } + + @Override public boolean isOverridden(Settings settings) + { + return IntSetting.GFX_ENHANCE_FORCE_TEXTURE_FILTERING.isOverridden(settings); + } + + @Override public boolean isRuntimeEditable() + { + return IntSetting.GFX_ENHANCE_FORCE_TEXTURE_FILTERING.isRuntimeEditable(); + } + + @Override public boolean delete(Settings settings) + { + return IntSetting.GFX_ENHANCE_FORCE_TEXTURE_FILTERING.delete(settings); + } + }; + sl.add(new SingleChoiceSetting(mContext, filteringSetting, R.string.texture_filtering, + R.string.texture_filtering_description, R.array.textureFilteringEntries, + R.array.textureFilteringValues)); int stereoModeValue = IntSetting.GFX_STEREO_MODE.getInt(mSettings); final int anaglyphMode = 3; @@ -827,8 +858,6 @@ public final class SettingsFragmentPresenter R.string.scaled_efb_copy, R.string.scaled_efb_copy_description)); sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_ENABLE_PIXEL_LIGHTING, R.string.per_pixel_lighting, R.string.per_pixel_lighting_description)); - sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_ENHANCE_FORCE_FILTERING, - R.string.force_texture_filtering, R.string.force_texture_filtering_description)); sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_ENHANCE_FORCE_TRUE_COLOR, R.string.force_24bit_color, R.string.force_24bit_color_description)); sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_DISABLE_FOG, R.string.disable_fog, diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index af3b5e29b0..4e27b8ade3 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -293,7 +293,7 @@ - @string/multiple_one + @string/filtering_default @string/multiple_two @string/multiple_four @string/multiple_eight @@ -307,6 +307,18 @@ 4 + + + @string/filtering_default + @string/filtering_nearest + @string/filtering_linear + + + 0 + 1 + 2 + + @string/stereoscopy_off diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index 4ef3b33ec8..4665046fa5 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -252,6 +252,8 @@ Reduces the amount of aliasing caused by rasterizing 3D graphics. This makes the rendered picture look less blocky. Heavily decreases emulation speed and sometimes causes issues. Anisotropic Filtering Enhances visual quality of textures that are at oblique viewing angles. Might cause issues in a small number of games. + Texture Filtering + Overrides the texture scaling filter selected by the game. Any option except \'Default\' will alter the look of the game\'s textures and might cause issues in a small number of games. Post-Processing Effect Apply a post-processing effect after finishing a frame Post Processing Shader @@ -753,6 +755,11 @@ It can efficiently compress both junk data and encrypted Wii data. 8x 16x + + Default + Force Nearest + Force Linear + Off Side-by-Side