summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/PostProcessing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/OGL/PostProcessing.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/PostProcessing.cpp39
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;
}