From bf0b8e9c761b14f48f4fc87691ef41d8f2b1e130 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:31:51 +0200 Subject: [PATCH] Graphics: Fix clear being parasited by scissor operations --- src/Nazara/Graphics/DeferredGeometryPass.cpp | 1 + src/Nazara/Graphics/DepthRenderTechnique.cpp | 12 +++++++++--- src/Nazara/Graphics/ForwardRenderTechnique.cpp | 5 +++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Graphics/DeferredGeometryPass.cpp b/src/Nazara/Graphics/DeferredGeometryPass.cpp index ef7586259..dcea7d305 100644 --- a/src/Nazara/Graphics/DeferredGeometryPass.cpp +++ b/src/Nazara/Graphics/DeferredGeometryPass.cpp @@ -85,6 +85,7 @@ namespace Nz m_GBufferRTT->SetColorTargets({0, 1, 2}); // G-Buffer Renderer::SetTarget(m_GBufferRTT); + Renderer::SetScissorRect(Recti(0, 0, m_dimensions.x, m_dimensions.y)); Renderer::SetViewport(Recti(0, 0, m_dimensions.x, m_dimensions.y)); Renderer::SetRenderStates(m_clearStates); diff --git a/src/Nazara/Graphics/DepthRenderTechnique.cpp b/src/Nazara/Graphics/DepthRenderTechnique.cpp index 6c858f51c..5435d7497 100644 --- a/src/Nazara/Graphics/DepthRenderTechnique.cpp +++ b/src/Nazara/Graphics/DepthRenderTechnique.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -63,15 +64,20 @@ namespace Nz * \param sceneData Data of the scene */ - void DepthRenderTechnique::Clear(const SceneData& /*sceneData*/) const + void DepthRenderTechnique::Clear(const SceneData& sceneData) const { + const RenderTarget* renderTarget = sceneData.viewer->GetTarget(); + Recti fullscreenScissorRect = Recti(Vector2i(renderTarget->GetSize())); + + Renderer::SetScissorRect(fullscreenScissorRect); + Renderer::Enable(RendererParameter_DepthBuffer, true); Renderer::Enable(RendererParameter_DepthWrite, true); Renderer::Clear(RendererBuffer_Depth); // Just in case the background does render depth - //if (sceneData.background) - // sceneData.background->Draw(sceneData.viewer); + if (sceneData.background) + sceneData.background->Draw(sceneData.viewer); } /*! diff --git a/src/Nazara/Graphics/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index 142e559eb..cf3611362 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -69,6 +69,11 @@ namespace Nz void ForwardRenderTechnique::Clear(const SceneData& sceneData) const { + const RenderTarget* renderTarget = sceneData.viewer->GetTarget(); + Recti fullscreenScissorRect = Recti(Vector2i(renderTarget->GetSize())); + + Renderer::SetScissorRect(fullscreenScissorRect); + Renderer::Enable(RendererParameter_DepthBuffer, true); Renderer::Enable(RendererParameter_DepthWrite, true); Renderer::Clear(RendererBuffer_Depth);