Fixed shading in deferred.

Added sky in deferred.
Started render buffer abstraction
This commit is contained in:
antopilo
2021-09-01 22:31:45 -04:00
parent 54a138c044
commit c3d3e20ab4
12 changed files with 268 additions and 81 deletions

View File

@@ -83,6 +83,11 @@ namespace Nuake {
return m_GBuffer;
}
Ref<FrameBuffer> Window::GetDeferredBuffer() const
{
return m_DeferredBuffer;
}
Vector2 Window::GetSize()
{
int w, h = 0;
@@ -146,6 +151,9 @@ namespace Nuake {
m_GBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT1);
m_GBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT2);
m_DeferredBuffer = CreateRef<FrameBuffer>(true, Vector2(1920, 1080));
m_DeferredBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB));
// Temporary quad vbo for deferred.
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
@@ -262,8 +270,8 @@ namespace Nuake {
{
if (Engine::IsPlayMode)
m_Scene->Draw();
else
m_Scene->EditorDraw();
//else
// m_Scene->EditorDraw();
m_Scene->DrawInterface(m_Framebuffer->GetSize());
}
@@ -277,6 +285,31 @@ namespace Nuake {
m_GBuffer->Unbind();
m_DeferredBuffer->Bind();
m_DeferredBuffer->Clear();
{
glDisable(GL_CULL_FACE);
if (m_Scene->GetEnvironment()->ProceduralSkybox)
m_Scene->GetEnvironment()->ProceduralSkybox->Draw(m_Scene->m_EditorCamera);
m_Scene->EditorDrawDeferredShading();
m_GBuffer->GetTexture(GL_DEPTH_ATTACHMENT)->Bind(5);
m_GBuffer->GetTexture(GL_COLOR_ATTACHMENT0)->Bind(6);
m_GBuffer->GetTexture(GL_COLOR_ATTACHMENT1)->Bind(7);
m_GBuffer->GetTexture(GL_COLOR_ATTACHMENT2)->Bind(8);
Ref<Shader> deferredShader = ShaderManager::GetShader("resources/Shaders/deferred.shader");
deferredShader->SetUniform1i("m_Depth", 5);
deferredShader->SetUniform1i("m_Albedo", 6);
deferredShader->SetUniform1i("m_Normal", 7);
deferredShader->SetUniform1i("m_Material", 8);
Renderer::DrawQuad(Matrix4());
}
m_DeferredBuffer->Unbind();
Renderer::EndDraw();
}