Fixed being able to switch between Quad view and normal view.

This commit is contained in:
Tleety
2014-04-27 04:59:11 +02:00
parent a199e777bc
commit 4389f2db4c
4 changed files with 34 additions and 3 deletions
+25 -2
View File
@@ -119,10 +119,15 @@ void Renderer::LoadContent()
m_FirstPassProgram.Link(); m_FirstPassProgram.Link();
m_SecondPassProgram.AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/Vertex2.glsl"))); m_SecondPassProgram.AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/Vertex2.glsl")));
m_SecondPassProgram.AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/Fragment2-Debug.glsl"))); m_SecondPassProgram.AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/Fragment2.glsl")));
m_SecondPassProgram.Compile(); m_SecondPassProgram.Compile();
m_SecondPassProgram.Link(); m_SecondPassProgram.Link();
m_SecondPassProgram_Debug.AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/Vertex2.glsl")));
m_SecondPassProgram_Debug.AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/Fragment2-Debug.glsl")));
m_SecondPassProgram_Debug.Compile();
m_SecondPassProgram_Debug.Link();
m_ScreenQuad = CreateQuad(); m_ScreenQuad = CreateQuad();
FrameBufferTextures(); FrameBufferTextures();
@@ -130,6 +135,16 @@ void Renderer::LoadContent()
void Renderer::Draw(double dt) 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); glDisable(GL_BLEND);
DrawFBO(); DrawFBO();
@@ -653,7 +668,14 @@ void Renderer::DrawFBO()
// Draw to screen // Draw to screen
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); 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); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
////SetupDefferedStageUniforms(); // Probably what we do in FrameBufferTextures(); ////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 cameraMatrix = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix();
glm::mat4 MVP; glm::mat4 MVP;
for (auto tuple : ModelsToRender) for (auto tuple : ModelsToRender)
{ {
Model* model; Model* model;
+3
View File
@@ -96,11 +96,14 @@ private:
GLenum draw_bufs[2]; GLenum draw_bufs[2];
GLuint m_ScreenQuad; GLuint m_ScreenQuad;
bool m_QuadView;
std::shared_ptr<Camera> m_Camera; std::shared_ptr<Camera> m_Camera;
ShaderProgram m_ShaderProgram; ShaderProgram m_ShaderProgram;
ShaderProgram m_FirstPassProgram; ShaderProgram m_FirstPassProgram;
ShaderProgram m_SecondPassProgram; ShaderProgram m_SecondPassProgram;
ShaderProgram m_SecondPassProgram_Debug;
ShaderProgram m_ShaderProgramNormals; ShaderProgram m_ShaderProgramNormals;
ShaderProgram m_ShaderProgramShadows; ShaderProgram m_ShaderProgramShadows;
ShaderProgram m_ShaderProgramShadowsDrawDepth; ShaderProgram m_ShaderProgramShadowsDrawDepth;
+5
View File
@@ -23,10 +23,15 @@ void DrawQuadrant(vec4 texel, vec2 quadrant)
void main() 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)); //FragColor = texture2D(DiffuseTexture, Input.TextureCoord * 2 + vec2(0, -1));
DrawQuadrant(texture2D(DiffuseTexture, Input.TextureCoord * 2), vec2(-1, 1)); DrawQuadrant(texture2D(DiffuseTexture, Input.TextureCoord * 2), vec2(-1, 1));
DrawQuadrant(texture2D(PositionTexture, Input.TextureCoord * 2), vec2(1, 1)); DrawQuadrant(texture2D(PositionTexture, Input.TextureCoord * 2), vec2(1, 1));
DrawQuadrant(texture2D(NormalTexture, 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); vec4 AllTexel = texture2D(DiffuseTexture, Input.TextureCoord*2)*texture2D(PositionTexture, Input.TextureCoord*2)*texture2D(NormalTexture, Input.TextureCoord*2);
DrawQuadrant(AllTexel, vec2(1, -1)); DrawQuadrant(AllTexel, vec2(1, -1));
} }
+1 -1
View File
@@ -15,5 +15,5 @@ out vec4 FragColor;
void main() void main()
{ {
FragColor = texture2D(NormalTexture, Input.TextureCoord); FragColor = texture2D(DiffuseTexture, Input.TextureCoord);
} }