diff options
Diffstat (limited to 'Source/Core/VideoBackends/OGL/PostProcessing.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/PostProcessing.cpp | 39 |
1 files changed, 4 insertions, 35 deletions
diff --git a/Source/Core/VideoBackends/OGL/PostProcessing.cpp b/Source/Core/VideoBackends/OGL/PostProcessing.cpp index 3c1bb386bf..b03dc940be 100644 --- a/Source/Core/VideoBackends/OGL/PostProcessing.cpp +++ b/Source/Core/VideoBackends/OGL/PostProcessing.cpp @@ -36,29 +36,8 @@ static const char s_vertex_shader[] = " uv0 = rawpos * src_rect.zw + src_rect.xy;\n" "}\n"; -// Anaglyph Red-Cyan shader based on Dubois algorithm -// Constants taken from the paper: -// "Conversion of a Stereo Pair to Anaglyph with -// the Least-Squares Projection Method" -// Eric Dubois, March 2009 -static const char s_anaglyph_shader[] = - "void main() {\n" - " vec4 c0 = SampleLayer(0);\n" - " vec4 c1 = SampleLayer(1);\n" - " mat3 l = mat3( 0.437, 0.449, 0.164,\n" - " -0.062,-0.062,-0.024,\n" - " -0.048,-0.050,-0.017);\n" - " mat3 r = mat3(-0.011,-0.032,-0.007,\n" - " 0.377, 0.761, 0.009,\n" - " -0.026,-0.093, 1.234);\n" - " SetOutput(vec4(c0.rgb * l + c1.rgb * r, c0.a));\n" - "}\n"; - -static const char s_default_shader[] = "void main() { SetOutput(Sample()); }\n"; - OpenGLPostProcessing::OpenGLPostProcessing() : m_initialized(false) - , m_anaglyph(false) { CreateHeader(); @@ -183,23 +162,14 @@ void OpenGLPostProcessing::BlitFromTexture(TargetRectangle src, TargetRectangle void OpenGLPostProcessing::ApplyShader() { // shader didn't changed - if (m_initialized && m_config.GetShader() == g_ActiveConfig.sPostProcessingShader && - ((g_ActiveConfig.iStereoMode == STEREO_ANAGLYPH) == m_anaglyph)) + if (m_initialized && m_config.GetShader() == g_ActiveConfig.sPostProcessingShader) return; m_shader.Destroy(); m_uniform_bindings.clear(); // load shader code - std::string code = ""; - if (g_ActiveConfig.iStereoMode == STEREO_ANAGLYPH) - code = s_anaglyph_shader; - else if (g_ActiveConfig.sPostProcessingShader != "") - code = m_config.LoadShader(); - - if (code == "") - code = s_default_shader; - + std::string code = m_config.LoadShader(); code = LoadShaderOptions(code); const char* vertex_shader = s_vertex_shader; @@ -211,8 +181,8 @@ void OpenGLPostProcessing::ApplyShader() if (!ProgramShaderCache::CompileShader(m_shader, vertex_shader, code.c_str())) { ERROR_LOG(VIDEO, "Failed to compile post-processing shader %s", m_config.GetShader().c_str()); - - code = LoadShaderOptions(s_default_shader); + g_ActiveConfig.sPostProcessingShader.clear(); + code = m_config.LoadShader(); ProgramShaderCache::CompileShader(m_shader, vertex_shader, code.c_str()); } @@ -244,7 +214,6 @@ void OpenGLPostProcessing::ApplyShader() std::string glsl_name = "option_" + it.first; m_uniform_bindings[it.first] = glGetUniformLocation(m_shader.glprogid, glsl_name.c_str()); } - m_anaglyph = g_ActiveConfig.iStereoMode == STEREO_ANAGLYPH; m_initialized = true; } |
