VideoConfigDiag: Move post-processing shader list to post processor

The backends don't use this list at all, and since more than one
backend supports post-processing now, it's duplicate code.
This commit is contained in:
Stenzek
2017-04-21 23:59:45 +10:00
parent 417a4ca206
commit 27ae5b8d34
9 changed files with 42 additions and 57 deletions

View File

@ -7,6 +7,7 @@
#include "Common/CommonPaths.h"
#include "Common/CommonTypes.h"
#include "Common/FileSearch.h"
#include "Common/FileUtil.h"
#include "Common/IniFile.h"
#include "Common/Logging/Log.h"
@ -27,6 +28,40 @@ PostProcessingShaderImplementation::~PostProcessingShaderImplementation()
m_timer.Stop();
}
static std::vector<std::string> GetShaders(const std::string& sub_dir = "")
{
std::vector<std::string> paths =
Common::DoFileSearch({".glsl"}, {File::GetUserPath(D_SHADERS_IDX) + sub_dir,
File::GetSysDirectory() + SHADERS_DIR DIR_SEP + sub_dir});
std::vector<std::string> result;
for (std::string path : paths)
{
std::string name;
SplitPath(path, nullptr, &name, nullptr);
result.push_back(name);
}
return result;
}
std::vector<std::string> PostProcessingShaderImplementation::GetShaderList(APIType api_type)
{
// Currently there is no differentiation between API types and shader languages.
// This could change in the future, hence the api_type parameter, but ideally,
// shaders should be compatible across backends.
if (api_type == APIType::OpenGL || api_type == APIType::Vulkan)
return GetShaders();
return {};
}
std::vector<std::string> PostProcessingShaderImplementation::GetAnaglyphShaderList(APIType api_type)
{
if (api_type == APIType::OpenGL || api_type == APIType::Vulkan)
return GetShaders(ANAGLYPH_DIR DIR_SEP);
return {};
}
std::string PostProcessingShaderConfiguration::LoadShader(std::string shader)
{
// Load the shader from the configuration if there isn't one sent to us.