diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2014-05-05 13:44:08 -0500 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2014-05-05 13:44:08 -0500 |
| commit | 33bdc0f985d4c46c88d19677330554d1edc09b86 (patch) | |
| tree | e714c10fb72aa9e31ad24e0543d30d32f1a59c2d /Source/Android/src | |
| parent | 2f92b82b296629f9154f94f5d7541c0d61245807 (diff) | |
Adds support for the PP shaders in the Android UI.
Copies over the PP shaders to the APK's assets and installs them on run.
Exposes them via the video settings UI.
This is in anticipation of dropping the workaround for rotated blits on Adreno and instead forcing shader usage by the user.
Diffstat (limited to 'Source/Android/src')
3 files changed, 56 insertions, 1 deletions
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java index b28d476e23..b49763b862 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java @@ -40,6 +40,21 @@ public final class DolphinEmulator extends Activity } } + private void CopyAssetFolder(String assetFolder, String outputFolder) + { + try + { + for (String file : getAssets().list(assetFolder)) + { + CopyAsset(assetFolder + File.separator + file, outputFolder + File.separator + file); + } + } + catch (IOException e) + { + Log.e("DolphinEmulator", "Failed to copy asset folder: " + assetFolder, e); + } + } + private void copyFile(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; @@ -75,6 +90,7 @@ public final class DolphinEmulator extends Activity CopyAsset("dsp_rom.bin", GCDir + File.separator + "dsp_rom.bin"); CopyAsset("font_ansi.bin", GCDir + File.separator + "font_ansi.bin"); CopyAsset("font_sjis.bin", GCDir + File.separator + "font_sjis.bin"); + CopyAssetFolder("Shaders", BaseDir + File.separator + "Shaders"); } // Load the configuration keys set in the Dolphin ini and gfx ini files diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/settings/UserPreferences.java b/Source/Android/src/org/dolphinemu/dolphinemu/settings/UserPreferences.java index dcce4c51ef..1402f4393a 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/settings/UserPreferences.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/settings/UserPreferences.java @@ -45,6 +45,7 @@ public final class UserPreferences editor.putString("internalResolution", getConfig("gfx_opengl.ini", "Settings", "EFBScale", "2") ); editor.putString("FSAA", getConfig("gfx_opengl.ini", "Settings", "MSAA", "0")); editor.putString("anisotropicFiltering", getConfig("gfx_opengl.ini", "Enhancements", "MaxAnisotropy", "0")); + editor.putString("postProcessingShader", getConfig("gfx_opengl.ini", "Enhancements", "PostProcessingShader", "")); editor.putBoolean("scaledEFBCopy", getConfig("gfx_opengl.ini", "Hacks", "EFBScaledCopy", "True").equals("True")); editor.putBoolean("perPixelLighting", getConfig("gfx_opengl.ini", "Settings", "EnablePixelLighting", "False").equals("True")); editor.putBoolean("forceTextureFiltering", getConfig("gfx_opengl.ini", "Enhancements", "ForceFiltering", "False").equals("True")); @@ -161,6 +162,9 @@ public final class UserPreferences // Anisotropic Filtering Level. Falls back to 1x upon error. String anisotropicFiltLevel = prefs.getString("anisotropicFiltering", "0"); + // Post processing shader setting + String postProcessing = prefs.getString("postProcessingShader", ""); + // Whether or not Scaled EFB copies are used. boolean usingScaledEFBCopy = prefs.getBoolean("scaledEFBCopy", true); @@ -237,6 +241,7 @@ public final class UserPreferences NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "EFBScale", internalResolution); NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "MSAA", FSAALevel); NativeLibrary.SetConfig("gfx_opengl.ini", "Enhancements", "MaxAnisotropy", anisotropicFiltLevel); + NativeLibrary.SetConfig("gfx_opengl.ini", "Enhancements", "PostProcessingShader", postProcessing); NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBScaledCopy", usingScaledEFBCopy ? "True" : "False"); NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "EnablePixelLighting", usingPerPixelLighting ? "True" : "False"); NativeLibrary.SetConfig("gfx_opengl.ini", "Enhancements", "ForceFiltering", isForcingTextureFiltering ? "True" : "False"); diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/settings/video/VideoSettingsFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/settings/video/VideoSettingsFragment.java index 94e411ca9e..e0ba5d3754 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/settings/video/VideoSettingsFragment.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/settings/video/VideoSettingsFragment.java @@ -11,6 +11,7 @@ import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; +import android.os.Environment; import android.preference.ListPreference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; @@ -19,6 +20,10 @@ import android.preference.PreferenceScreen; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.utils.EGLHelper; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + import javax.microedition.khronos.opengles.GL10; /** @@ -54,7 +59,36 @@ public final class VideoSettingsFragment extends PreferenceFragment videoBackends.setEntries(R.array.videoBackendEntriesNoGLES3); videoBackends.setEntryValues(R.array.videoBackendValuesNoGLES3); } - + + // + // Set available post processing shaders + // + File[] shaders = new File(Environment.getExternalStorageDirectory()+ File.separator+"dolphin-emu"+ File.separator+"Shaders").listFiles(); + List<CharSequence> shader_names = new ArrayList<CharSequence>(); + List<CharSequence> shader_values = new ArrayList<CharSequence>(); + + // Disabled option + shader_names.add("Disabled"); + shader_values.add(""); + + for (File file : shaders) + { + if (file.isFile()) + { + String filename = file.getName(); + if (filename.contains(".glsl")) + { + // Strip the extension and put it in to the list + shader_names.add(filename.substring(0, filename.lastIndexOf('.'))); + shader_values.add(filename.substring(0, filename.lastIndexOf('.'))); + } + } + } + + final ListPreference shader_preference = (ListPreference) findPreference("postProcessingShader"); + shader_preference.setEntries(shader_names.toArray(new CharSequence[shader_names.size()])); + shader_preference.setEntryValues(shader_values.toArray(new CharSequence[shader_values.size()])); + // // Disable all options if Software Rendering is used. // |
