summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp48
1 files changed, 24 insertions, 24 deletions
diff --git a/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp b/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp
index a748ab5085..84fb0c4d1c 100644
--- a/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp
+++ b/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp
@@ -37,7 +37,7 @@ static char s_vertex_shader[] =
"void main(void) {\n"
" gl_Position = vec4(rawpos,0,1);\n"
" uv0 = tex0;\n"
- "}\n";
+ "}\n";
void Init()
{
@@ -45,7 +45,7 @@ void Init()
s_enable = 0;
s_width = 0;
s_height = 0;
-
+
glGenFramebuffers(1, &s_fbo);
glGenTextures(1, &s_texture);
glBindTexture(GL_TEXTURE_2D, s_texture);
@@ -56,17 +56,17 @@ void Init()
glBindFramebuffer(GL_FRAMEBUFFER, s_fbo);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, s_texture, 0);
FramebufferManager::SetFramebuffer(0);
-
+
glGenBuffers(1, &s_vbo);
glBindBuffer(GL_ARRAY_BUFFER, s_vbo);
- GLfloat vertices[] = {
- -1.f, -1.f, 0.f, 0.f,
- -1.f, 1.f, 0.f, 1.f,
- 1.f, -1.f, 1.f, 0.f,
+ GLfloat vertices[] = {
+ -1.f, -1.f, 0.f, 0.f,
+ -1.f, 1.f, 0.f, 1.f,
+ 1.f, -1.f, 1.f, 0.f,
1.f, 1.f, 1.f, 1.f
};
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
-
+
glGenVertexArrays(1, &s_vao);
glBindVertexArray( s_vao );
glEnableVertexAttribArray(SHADER_POSITION_ATTRIB);
@@ -78,10 +78,10 @@ void Init()
void Shutdown()
{
s_shader.Destroy();
-
+
glDeleteFramebuffers(1, &s_vbo);
glDeleteTextures(1, &s_texture);
-
+
glDeleteBuffers(1, &s_vbo);
glDeleteVertexArrays(1, &s_vao);
}
@@ -99,22 +99,22 @@ void BindTargetFramebuffer ()
void BlitToScreen()
{
if(!s_enable) return;
-
+
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glViewport(0, 0, s_width, s_height);
-
+
glBindVertexArray(s_vao);
s_shader.Bind();
-
+
glUniform4f(s_uniform_resolution, (float)s_width, (float)s_height, 1.0f/(float)s_width, 1.0f/(float)s_height);
-
+
glActiveTexture(GL_TEXTURE0+9);
glBindTexture(GL_TEXTURE_2D, s_texture);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glBindTexture(GL_TEXTURE_2D, 0);
-
+
/* glBindFramebuffer(GL_READ_FRAMEBUFFER, s_fbo);
-
+
glBlitFramebuffer(rc.left, rc.bottom, rc.right, rc.top,
rc.left, rc.bottom, rc.right, rc.top,
GL_COLOR_BUFFER_BIT, GL_NEAREST);*/
@@ -127,7 +127,7 @@ void Update ( u32 width, u32 height )
if(s_enable && (width != s_width || height != s_height)) {
s_width = width;
s_height = height;
-
+
// alloc texture for framebuffer
glActiveTexture(GL_TEXTURE0+9);
glBindTexture(GL_TEXTURE_2D, s_texture);
@@ -143,12 +143,12 @@ void ApplyShader()
s_currentShader = g_ActiveConfig.sPostProcessingShader;
s_enable = false;
s_shader.Destroy();
-
+
// shader disabled
if (g_ActiveConfig.sPostProcessingShader == "") return;
-
+
// so need to compile shader
-
+
// loading shader code
std::string code;
std::string path = File::GetUserPath(D_SHADERS_IDX) + g_ActiveConfig.sPostProcessingShader + ".glsl";
@@ -157,20 +157,20 @@ void ApplyShader()
// Fallback to shared user dir
path = File::GetSysDirectory() + SHADERS_DIR DIR_SEP + g_ActiveConfig.sPostProcessingShader + ".glsl";
}
- if(!File::ReadFileToString(true, path.c_str(), code)) {
+ if(!File::ReadFileToString(path.c_str(), code)) {
ERROR_LOG(VIDEO, "Post-processing shader not found: %s", path.c_str());
return;
}
-
+
// and compile it
if (!ProgramShaderCache::CompileShader(s_shader, s_vertex_shader, code.c_str())) {
ERROR_LOG(VIDEO, "Failed to compile post-processing shader %s", s_currentShader.c_str());
return;
}
-
+
// read uniform locations
s_uniform_resolution = glGetUniformLocation(s_shader.glprogid, "resolution");
-
+
// successful
s_enable = true;
}