From 5c4ee2f71e2e1c80ba2bf829751f1202f6e65ee9 Mon Sep 17 00:00:00 2001 From: Jules Blok Date: Sun, 25 Jan 2015 23:08:49 +0100 Subject: PostProcessing: Move default pixel shader to PostProcessingShaderConfiguration. Reduces code complexity and fixes a bug where the shader is not properly invalidated. --- Source/Core/VideoCommon/PostProcessing.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'Source/Core/VideoCommon/PostProcessing.cpp') diff --git a/Source/Core/VideoCommon/PostProcessing.cpp b/Source/Core/VideoCommon/PostProcessing.cpp index c27b0f89fc..c299d41b15 100644 --- a/Source/Core/VideoCommon/PostProcessing.cpp +++ b/Source/Core/VideoCommon/PostProcessing.cpp @@ -13,6 +13,8 @@ #include "VideoCommon/VideoConfig.h" +static const char s_default_shader[] = "void main() { SetOutput(Sample()); }\n"; + PostProcessingShaderImplementation::PostProcessingShaderImplementation() { m_timer.Start(); @@ -36,16 +38,23 @@ std::string PostProcessingShaderConfiguration::LoadShader(std::string shader) std::string code; std::string path = File::GetUserPath(D_SHADERS_IDX) + sub_dir + shader + ".glsl"; - if (!File::Exists(path)) + if (shader == "") { - // Fallback to shared user dir - path = File::GetSysDirectory() + SHADERS_DIR DIR_SEP + sub_dir + shader + ".glsl"; + code = s_default_shader; } - - if (!File::ReadFileToString(path, code)) + else { - ERROR_LOG(VIDEO, "Post-processing shader not found: %s", path.c_str()); - return ""; + if (!File::Exists(path)) + { + // Fallback to shared user dir + path = File::GetSysDirectory() + SHADERS_DIR DIR_SEP + sub_dir + shader + ".glsl"; + } + + if (!File::ReadFileToString(path, code)) + { + ERROR_LOG(VIDEO, "Post-processing shader not found: %s", path.c_str()); + code = s_default_shader; + } } LoadOptions(code); -- cgit v1.2.3