Fixed being able to switch between Quad view and normal view.
This commit is contained in:
+25
-2
@@ -119,10 +119,15 @@ void Renderer::LoadContent()
|
||||
m_FirstPassProgram.Link();
|
||||
|
||||
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.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();
|
||||
|
||||
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;
|
||||
|
||||
@@ -96,11 +96,14 @@ private:
|
||||
GLenum draw_bufs[2];
|
||||
GLuint m_ScreenQuad;
|
||||
|
||||
bool m_QuadView;
|
||||
|
||||
std::shared_ptr<Camera> m_Camera;
|
||||
|
||||
ShaderProgram m_ShaderProgram;
|
||||
ShaderProgram m_FirstPassProgram;
|
||||
ShaderProgram m_SecondPassProgram;
|
||||
ShaderProgram m_SecondPassProgram_Debug;
|
||||
ShaderProgram m_ShaderProgramNormals;
|
||||
ShaderProgram m_ShaderProgramShadows;
|
||||
ShaderProgram m_ShaderProgramShadowsDrawDepth;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -15,5 +15,5 @@ out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
FragColor = texture2D(NormalTexture, Input.TextureCoord);
|
||||
FragColor = texture2D(DiffuseTexture, Input.TextureCoord);
|
||||
}
|
||||
Reference in New Issue
Block a user