diff --git a/Data/User/Shaders/16bit.txt b/Data/Sys/Shaders/16bit.glsl similarity index 100% rename from Data/User/Shaders/16bit.txt rename to Data/Sys/Shaders/16bit.glsl diff --git a/Data/User/Shaders/32bit.txt b/Data/Sys/Shaders/32bit.glsl similarity index 100% rename from Data/User/Shaders/32bit.txt rename to Data/Sys/Shaders/32bit.glsl diff --git a/Data/User/Shaders/README.txt b/Data/Sys/Shaders/README.txt similarity index 100% rename from Data/User/Shaders/README.txt rename to Data/Sys/Shaders/README.txt diff --git a/Data/User/Shaders/acidmetal.txt b/Data/Sys/Shaders/acidmetal.glsl similarity index 100% rename from Data/User/Shaders/acidmetal.txt rename to Data/Sys/Shaders/acidmetal.glsl diff --git a/Data/User/Shaders/acidtrip.txt b/Data/Sys/Shaders/acidtrip.glsl similarity index 100% rename from Data/User/Shaders/acidtrip.txt rename to Data/Sys/Shaders/acidtrip.glsl diff --git a/Data/User/Shaders/acidtrip2.txt b/Data/Sys/Shaders/acidtrip2.glsl similarity index 100% rename from Data/User/Shaders/acidtrip2.txt rename to Data/Sys/Shaders/acidtrip2.glsl diff --git a/Data/User/Shaders/asciiart.txt b/Data/Sys/Shaders/asciiart.glsl similarity index 100% rename from Data/User/Shaders/asciiart.txt rename to Data/Sys/Shaders/asciiart.glsl diff --git a/Data/User/Shaders/auto_toon.txt b/Data/Sys/Shaders/auto_toon.glsl similarity index 100% rename from Data/User/Shaders/auto_toon.txt rename to Data/Sys/Shaders/auto_toon.glsl diff --git a/Data/User/Shaders/auto_toon2.txt b/Data/Sys/Shaders/auto_toon2.glsl similarity index 100% rename from Data/User/Shaders/auto_toon2.txt rename to Data/Sys/Shaders/auto_toon2.glsl diff --git a/Data/User/Shaders/bad_bloom.txt b/Data/Sys/Shaders/bad_bloom.glsl similarity index 100% rename from Data/User/Shaders/bad_bloom.txt rename to Data/Sys/Shaders/bad_bloom.glsl diff --git a/Data/User/Shaders/brighten.txt b/Data/Sys/Shaders/brighten.glsl similarity index 100% rename from Data/User/Shaders/brighten.txt rename to Data/Sys/Shaders/brighten.glsl diff --git a/Data/User/Shaders/chrismas.txt b/Data/Sys/Shaders/chrismas.glsl similarity index 100% rename from Data/User/Shaders/chrismas.txt rename to Data/Sys/Shaders/chrismas.glsl diff --git a/Data/User/Shaders/cool1.txt b/Data/Sys/Shaders/cool1.glsl similarity index 100% rename from Data/User/Shaders/cool1.txt rename to Data/Sys/Shaders/cool1.glsl diff --git a/Data/User/Shaders/darkerbrighter.txt b/Data/Sys/Shaders/darkerbrighter.glsl similarity index 100% rename from Data/User/Shaders/darkerbrighter.txt rename to Data/Sys/Shaders/darkerbrighter.glsl diff --git a/Data/User/Shaders/emboss.txt b/Data/Sys/Shaders/emboss.glsl similarity index 100% rename from Data/User/Shaders/emboss.txt rename to Data/Sys/Shaders/emboss.glsl diff --git a/Data/User/Shaders/fire.txt b/Data/Sys/Shaders/fire.glsl similarity index 100% rename from Data/User/Shaders/fire.txt rename to Data/Sys/Shaders/fire.glsl diff --git a/Data/User/Shaders/fire2.txt b/Data/Sys/Shaders/fire2.glsl similarity index 100% rename from Data/User/Shaders/fire2.txt rename to Data/Sys/Shaders/fire2.glsl diff --git a/Data/User/Shaders/firewater.txt b/Data/Sys/Shaders/firewater.glsl similarity index 100% rename from Data/User/Shaders/firewater.txt rename to Data/Sys/Shaders/firewater.glsl diff --git a/Data/User/Shaders/grayscale.txt b/Data/Sys/Shaders/grayscale.glsl similarity index 100% rename from Data/User/Shaders/grayscale.txt rename to Data/Sys/Shaders/grayscale.glsl diff --git a/Data/User/Shaders/grayscale2.txt b/Data/Sys/Shaders/grayscale2.glsl similarity index 100% rename from Data/User/Shaders/grayscale2.txt rename to Data/Sys/Shaders/grayscale2.glsl diff --git a/Data/User/Shaders/invert.txt b/Data/Sys/Shaders/invert.glsl similarity index 100% rename from Data/User/Shaders/invert.txt rename to Data/Sys/Shaders/invert.glsl diff --git a/Data/User/Shaders/invert_blue.txt b/Data/Sys/Shaders/invert_blue.glsl similarity index 100% rename from Data/User/Shaders/invert_blue.txt rename to Data/Sys/Shaders/invert_blue.glsl diff --git a/Data/User/Shaders/invertedoutline.txt b/Data/Sys/Shaders/invertedoutline.glsl similarity index 100% rename from Data/User/Shaders/invertedoutline.txt rename to Data/Sys/Shaders/invertedoutline.glsl diff --git a/Data/User/Shaders/mad_world.txt b/Data/Sys/Shaders/mad_world.glsl similarity index 100% rename from Data/User/Shaders/mad_world.txt rename to Data/Sys/Shaders/mad_world.glsl diff --git a/Data/User/Shaders/nightvision.txt b/Data/Sys/Shaders/nightvision.glsl similarity index 100% rename from Data/User/Shaders/nightvision.txt rename to Data/Sys/Shaders/nightvision.glsl diff --git a/Data/User/Shaders/nightvision2.txt b/Data/Sys/Shaders/nightvision2.glsl similarity index 100% rename from Data/User/Shaders/nightvision2.txt rename to Data/Sys/Shaders/nightvision2.glsl diff --git a/Data/User/Shaders/nightvision2scanlines.txt b/Data/Sys/Shaders/nightvision2scanlines.glsl similarity index 100% rename from Data/User/Shaders/nightvision2scanlines.txt rename to Data/Sys/Shaders/nightvision2scanlines.glsl diff --git a/Data/User/Shaders/posterize.txt b/Data/Sys/Shaders/posterize.glsl similarity index 100% rename from Data/User/Shaders/posterize.txt rename to Data/Sys/Shaders/posterize.glsl diff --git a/Data/User/Shaders/posterize2.txt b/Data/Sys/Shaders/posterize2.glsl similarity index 100% rename from Data/User/Shaders/posterize2.txt rename to Data/Sys/Shaders/posterize2.glsl diff --git a/Data/User/Shaders/primarycolors.txt b/Data/Sys/Shaders/primarycolors.glsl similarity index 100% rename from Data/User/Shaders/primarycolors.txt rename to Data/Sys/Shaders/primarycolors.glsl diff --git a/Data/User/Shaders/sepia.txt b/Data/Sys/Shaders/sepia.glsl similarity index 100% rename from Data/User/Shaders/sepia.txt rename to Data/Sys/Shaders/sepia.glsl diff --git a/Data/User/Shaders/sketchy.txt b/Data/Sys/Shaders/sketchy.glsl similarity index 100% rename from Data/User/Shaders/sketchy.txt rename to Data/Sys/Shaders/sketchy.glsl diff --git a/Data/User/Shaders/spookey1.txt b/Data/Sys/Shaders/spookey1.glsl similarity index 100% rename from Data/User/Shaders/spookey1.txt rename to Data/Sys/Shaders/spookey1.glsl diff --git a/Data/User/Shaders/spookey2.txt b/Data/Sys/Shaders/spookey2.glsl similarity index 100% rename from Data/User/Shaders/spookey2.txt rename to Data/Sys/Shaders/spookey2.glsl diff --git a/Data/User/Shaders/stereoscopic.txt b/Data/Sys/Shaders/stereoscopic.glsl similarity index 100% rename from Data/User/Shaders/stereoscopic.txt rename to Data/Sys/Shaders/stereoscopic.glsl diff --git a/Data/User/Shaders/stereoscopic2.txt b/Data/Sys/Shaders/stereoscopic2.glsl similarity index 100% rename from Data/User/Shaders/stereoscopic2.txt rename to Data/Sys/Shaders/stereoscopic2.glsl diff --git a/Data/User/Shaders/sunset.txt b/Data/Sys/Shaders/sunset.glsl similarity index 100% rename from Data/User/Shaders/sunset.txt rename to Data/Sys/Shaders/sunset.glsl diff --git a/Data/User/Shaders/swap_RGB_BGR.txt b/Data/Sys/Shaders/swap_RGB_BGR.glsl similarity index 100% rename from Data/User/Shaders/swap_RGB_BGR.txt rename to Data/Sys/Shaders/swap_RGB_BGR.glsl diff --git a/Data/User/Shaders/swap_RGB_BRG.txt b/Data/Sys/Shaders/swap_RGB_BRG.glsl similarity index 100% rename from Data/User/Shaders/swap_RGB_BRG.txt rename to Data/Sys/Shaders/swap_RGB_BRG.glsl diff --git a/Data/User/Shaders/swap_RGB_GBR.txt b/Data/Sys/Shaders/swap_RGB_GBR.glsl similarity index 100% rename from Data/User/Shaders/swap_RGB_GBR.txt rename to Data/Sys/Shaders/swap_RGB_GBR.glsl diff --git a/Data/User/Shaders/swap_RGB_GRB.txt b/Data/Sys/Shaders/swap_RGB_GRB.glsl similarity index 100% rename from Data/User/Shaders/swap_RGB_GRB.txt rename to Data/Sys/Shaders/swap_RGB_GRB.glsl diff --git a/Data/User/Shaders/swap_RGB_RBG.txt b/Data/Sys/Shaders/swap_RGB_RBG.glsl similarity index 100% rename from Data/User/Shaders/swap_RGB_RBG.txt rename to Data/Sys/Shaders/swap_RGB_RBG.glsl diff --git a/Data/User/Shaders/toxic.txt b/Data/Sys/Shaders/toxic.glsl similarity index 100% rename from Data/User/Shaders/toxic.txt rename to Data/Sys/Shaders/toxic.glsl diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp index 9fae1f2999..7ba77501c0 100644 --- a/Source/Core/DolphinWX/Src/Main.cpp +++ b/Source/Core/DolphinWX/Src/Main.cpp @@ -253,27 +253,26 @@ bool DolphinApp::OnInit() //TODO : detect the revision and upgrade where necessary File::CopyDir(std::string(SHARED_USER_DIR GAMECONFIG_DIR DIR_SEP), File::GetUserPath(D_GAMECONFIG_IDX)); - File::CopyDir(std::string(SHARED_USER_DIR SHADERS_DIR DIR_SEP), - File::GetUserPath(D_SHADERS_IDX)); File::CopyDir(std::string(SHARED_USER_DIR WII_USER_DIR DIR_SEP), File::GetUserPath(D_WIIUSER_IDX)); File::CopyDir(std::string(SHARED_USER_DIR OPENCL_DIR DIR_SEP), File::GetUserPath(D_OPENCL_IDX)); File::CreateFullPath(File::GetUserPath(D_USER_IDX)); - File::CreateFullPath(File::GetUserPath(D_CONFIG_IDX)); - File::CreateFullPath(File::GetUserPath(D_GCUSER_IDX)); File::CreateFullPath(File::GetUserPath(D_CACHE_IDX)); + File::CreateFullPath(File::GetUserPath(D_CONFIG_IDX)); File::CreateFullPath(File::GetUserPath(D_DUMPDSP_IDX)); File::CreateFullPath(File::GetUserPath(D_DUMPTEXTURES_IDX)); - File::CreateFullPath(File::GetUserPath(D_HIRESTEXTURES_IDX)); - File::CreateFullPath(File::GetUserPath(D_SCREENSHOTS_IDX)); - File::CreateFullPath(File::GetUserPath(D_STATESAVES_IDX)); - File::CreateFullPath(File::GetUserPath(D_MAILLOGS_IDX)); - File::CreateFullPath(File::GetUserPath(D_MAPS_IDX)); + File::CreateFullPath(File::GetUserPath(D_GCUSER_IDX)); File::CreateFullPath(File::GetUserPath(D_GCUSER_IDX) + USA_DIR DIR_SEP); File::CreateFullPath(File::GetUserPath(D_GCUSER_IDX) + EUR_DIR DIR_SEP); File::CreateFullPath(File::GetUserPath(D_GCUSER_IDX) + JAP_DIR DIR_SEP); + File::CreateFullPath(File::GetUserPath(D_HIRESTEXTURES_IDX)); + File::CreateFullPath(File::GetUserPath(D_MAILLOGS_IDX)); + File::CreateFullPath(File::GetUserPath(D_MAPS_IDX)); + File::CreateFullPath(File::GetUserPath(D_SCREENSHOTS_IDX)); + File::CreateFullPath(File::GetUserPath(D_SHADERS_IDX)); + File::CreateFullPath(File::GetUserPath(D_STATESAVES_IDX)); LogManager::Init(); SConfig::Init(); diff --git a/Source/Plugins/Plugin_VideoOGL/Src/PostProcessing.cpp b/Source/Plugins/Plugin_VideoOGL/Src/PostProcessing.cpp index d5899038fc..c1563a74e2 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/PostProcessing.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/PostProcessing.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include "CommonPaths.h" #include "FileUtil.h" #include "VideoCommon.h" #include "VideoConfig.h" @@ -150,7 +151,12 @@ void ApplyShader() // loading shader code std::string code; - std::string path = File::GetUserPath(D_SHADERS_IDX) + g_ActiveConfig.sPostProcessingShader + ".txt"; + std::string path = File::GetUserPath(D_SHADERS_IDX) + g_ActiveConfig.sPostProcessingShader + ".glsl"; + if (!File::Exists(path)) + { + // Fallback to shared user dir + path = File::GetSysDirectory() + SHADERS_DIR DIR_SEP + g_ActiveConfig.sPostProcessingShader + ".glsl"; + } if(!File::ReadFileToString(true, path.c_str(), code)) { ERROR_LOG(VIDEO, "Post-processing shader not found: %s", path.c_str()); return; diff --git a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp index 1eb986fe74..9e38b80fed 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp @@ -38,6 +38,7 @@ Make AA apply instantly during gameplay if possible #include "Globals.h" #include "Atomic.h" +#include "CommonPaths.h" #include "Thread.h" #include "LogManager.h" @@ -102,25 +103,37 @@ std::string VideoBackend::GetDisplayName() void GetShaders(std::vector &shaders) { + std::set already_found; + shaders.clear(); - if (File::IsDirectory(File::GetUserPath(D_SHADERS_IDX))) + static const std::string directories[] = { + File::GetUserPath(D_SHADERS_IDX), + File::GetSysDirectory() + SHADERS_DIR DIR_SEP, + }; + for (size_t i = 0; i < ArraySize(directories); ++i) { + if (!File::IsDirectory(directories[i])) + continue; + File::FSTEntry entry; - File::ScanDirectoryTree(File::GetUserPath(D_SHADERS_IDX), entry); - for (u32 i = 0; i < entry.children.size(); i++) + File::ScanDirectoryTree(directories[i], entry); + for (u32 j = 0; j < entry.children.size(); j++) { - std::string name = entry.children[i].virtualName.c_str(); - if (!strcasecmp(name.substr(name.size() - 4).c_str(), ".txt")) { - name = name.substr(0, name.size() - 4); - shaders.push_back(name); - } + std::string name = entry.children[j].virtualName.c_str(); + if (name.size() < 5) + continue; + if (strcasecmp(name.substr(name.size() - 5).c_str(), ".glsl")) + continue; + + name = name.substr(0, name.size() - 5); + if (already_found.find(name) != already_found.end()) + continue; + + already_found.insert(name); + shaders.push_back(name); } - std::sort(shaders.begin(), shaders.end()); - } - else - { - File::CreateDir(File::GetUserPath(D_SHADERS_IDX).c_str()); } + std::sort(shaders.begin(), shaders.end()); } void InitBackendInfo()