From 4389f2db4c39e08210f67192b034ff4a7e4807f0 Mon Sep 17 00:00:00 2001 From: Tleety Date: Sun, 27 Apr 2014 04:59:11 +0200 Subject: [PATCH] Fixed being able to switch between Quad view and normal view. --- src/Renderer.cpp | 27 +++++++++++++++++++++++++-- src/Renderer.h | 3 +++ src/Shaders/Fragment2-Debug.glsl | 5 +++++ src/Shaders/Fragment2.glsl | 2 +- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/Renderer.cpp b/src/Renderer.cpp index 17e3db6..1125dc0 100755 --- a/src/Renderer.cpp +++ b/src/Renderer.cpp @@ -119,10 +119,15 @@ void Renderer::LoadContent() m_FirstPassProgram.Link(); m_SecondPassProgram.AddShader(std::shared_ptr(new VertexShader("Shaders/Vertex2.glsl"))); - m_SecondPassProgram.AddShader(std::shared_ptr(new FragmentShader("Shaders/Fragment2-Debug.glsl"))); + m_SecondPassProgram.AddShader(std::shared_ptr(new FragmentShader("Shaders/Fragment2.glsl"))); m_SecondPassProgram.Compile(); m_SecondPassProgram.Link(); + m_SecondPassProgram_Debug.AddShader(std::shared_ptr(new VertexShader("Shaders/Vertex2.glsl"))); + m_SecondPassProgram_Debug.AddShader(std::shared_ptr(new FragmentShader("Shaders/Fragment2-Debug.glsl"))); + m_SecondPassProgram_Debug.Compile(); + m_SecondPassProgram_Debug.Link(); + m_ScreenQuad = CreateQuad(); FrameBufferTextures(); @@ -130,6 +135,16 @@ void Renderer::LoadContent() void Renderer::Draw(double dt) { + + if(glfwGetKey(m_Window, GLFW_KEY_F1)) + { + m_QuadView = false; + } + if(glfwGetKey(m_Window, GLFW_KEY_F2)) + { + m_QuadView = true; + } + glDisable(GL_BLEND); DrawFBO(); @@ -653,7 +668,14 @@ void Renderer::DrawFBO() // Draw to screen glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - m_SecondPassProgram.Bind(); + if(!m_QuadView) + { + m_SecondPassProgram.Bind(); + } + else + { + m_SecondPassProgram_Debug.Bind(); + } glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ////SetupDefferedStageUniforms(); // Probably what we do in FrameBufferTextures(); @@ -736,6 +758,7 @@ void Renderer::DrawFBOScene() { glm::mat4 cameraMatrix = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix(); glm::mat4 MVP; + for (auto tuple : ModelsToRender) { Model* model; diff --git a/src/Renderer.h b/src/Renderer.h index 2d5eab0..540be71 100755 --- a/src/Renderer.h +++ b/src/Renderer.h @@ -96,11 +96,14 @@ private: GLenum draw_bufs[2]; GLuint m_ScreenQuad; + bool m_QuadView; + std::shared_ptr m_Camera; ShaderProgram m_ShaderProgram; ShaderProgram m_FirstPassProgram; ShaderProgram m_SecondPassProgram; + ShaderProgram m_SecondPassProgram_Debug; ShaderProgram m_ShaderProgramNormals; ShaderProgram m_ShaderProgramShadows; ShaderProgram m_ShaderProgramShadowsDrawDepth; diff --git a/src/Shaders/Fragment2-Debug.glsl b/src/Shaders/Fragment2-Debug.glsl index dc258c8..db35d6e 100644 --- a/src/Shaders/Fragment2-Debug.glsl +++ b/src/Shaders/Fragment2-Debug.glsl @@ -23,10 +23,15 @@ void DrawQuadrant(vec4 texel, vec2 quadrant) void main() { + vec4 DiffuseTexel = texture2D(DiffuseTexture, Input.TextureCoord); + vec4 PositionTexel = texture2D(PositionTexture, Input.TextureCoord); + vec4 NormalTexel = texture2D(NormalTexture, Input.TextureCoord); + //FragColor = texture2D(DiffuseTexture, Input.TextureCoord * 2 + vec2(0, -1)); DrawQuadrant(texture2D(DiffuseTexture, Input.TextureCoord * 2), vec2(-1, 1)); DrawQuadrant(texture2D(PositionTexture, Input.TextureCoord * 2), vec2(1, 1)); DrawQuadrant(texture2D(NormalTexture, Input.TextureCoord * 2), vec2(-1, -1)); + vec4 AllTexel = texture2D(DiffuseTexture, Input.TextureCoord*2)*texture2D(PositionTexture, Input.TextureCoord*2)*texture2D(NormalTexture, Input.TextureCoord*2); DrawQuadrant(AllTexel, vec2(1, -1)); } diff --git a/src/Shaders/Fragment2.glsl b/src/Shaders/Fragment2.glsl index 42c3997..cbc905e 100644 --- a/src/Shaders/Fragment2.glsl +++ b/src/Shaders/Fragment2.glsl @@ -15,5 +15,5 @@ out vec4 FragColor; void main() { - FragColor = texture2D(NormalTexture, Input.TextureCoord); + FragColor = texture2D(DiffuseTexture, Input.TextureCoord); } \ No newline at end of file