From 0697fe10796b67ad31141e6fc5d3ea7f2c9d3474 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 6 Apr 2016 12:39:29 +0200 Subject: [PATCH] Revert "Graphics/RenderTechnique: Remove Clear method" This reverts commit 8aa3764660d5c98995135f736ecd710677fa240c [formerly 9b4ec3ae32492e383c19a06bd1c3e461b3fcf46d]. It seems I was wrong about the Clear method, my revert broke the Deferred Rendering Former-commit-id: b8d2db34ffd9d24798670f19aba0de88f5b77a1c --- SDK/src/NDK/Systems/RenderSystem.cpp | 1 + include/Nazara/Graphics/AbstractRenderTechnique.hpp | 1 + include/Nazara/Graphics/DeferredRenderTechnique.hpp | 1 + include/Nazara/Graphics/ForwardRenderTechnique.hpp | 1 + src/Nazara/Graphics/DeferredRenderTechnique.cpp | 5 +++++ src/Nazara/Graphics/ForwardRenderTechnique.cpp | 13 ++++++++----- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 7d7956a12..a87fdaf08 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -99,6 +99,7 @@ namespace Ndk sceneData.background = m_background; sceneData.viewer = &camComponent; + m_renderTechnique.Clear(sceneData); m_renderTechnique.Draw(sceneData); } } diff --git a/include/Nazara/Graphics/AbstractRenderTechnique.hpp b/include/Nazara/Graphics/AbstractRenderTechnique.hpp index 5f268275e..d13ac88ee 100644 --- a/include/Nazara/Graphics/AbstractRenderTechnique.hpp +++ b/include/Nazara/Graphics/AbstractRenderTechnique.hpp @@ -28,6 +28,7 @@ namespace Nz AbstractRenderTechnique(AbstractRenderTechnique&&) = default; virtual ~AbstractRenderTechnique(); + virtual void Clear(const SceneData& sceneData) const = 0; virtual bool Draw(const SceneData& sceneData) const = 0; virtual void EnableInstancing(bool instancing); diff --git a/include/Nazara/Graphics/DeferredRenderTechnique.hpp b/include/Nazara/Graphics/DeferredRenderTechnique.hpp index 5d371b94f..99d1fc813 100644 --- a/include/Nazara/Graphics/DeferredRenderTechnique.hpp +++ b/include/Nazara/Graphics/DeferredRenderTechnique.hpp @@ -32,6 +32,7 @@ namespace Nz DeferredRenderTechnique(); ~DeferredRenderTechnique(); + void Clear(const SceneData& sceneData) const override; bool Draw(const SceneData& sceneData) const override; void EnablePass(RenderPassType renderPass, int position, bool enable); diff --git a/include/Nazara/Graphics/ForwardRenderTechnique.hpp b/include/Nazara/Graphics/ForwardRenderTechnique.hpp index 920a6c0bd..6881ac2d7 100644 --- a/include/Nazara/Graphics/ForwardRenderTechnique.hpp +++ b/include/Nazara/Graphics/ForwardRenderTechnique.hpp @@ -24,6 +24,7 @@ namespace Nz ForwardRenderTechnique(); ~ForwardRenderTechnique() = default; + void Clear(const SceneData& sceneData) const override; bool Draw(const SceneData& sceneData) const override; unsigned int GetMaxLightPassPerObject() const; diff --git a/src/Nazara/Graphics/DeferredRenderTechnique.cpp b/src/Nazara/Graphics/DeferredRenderTechnique.cpp index 63342363c..a6956cdf8 100644 --- a/src/Nazara/Graphics/DeferredRenderTechnique.cpp +++ b/src/Nazara/Graphics/DeferredRenderTechnique.cpp @@ -204,6 +204,11 @@ namespace Nz DeferredRenderTechnique::~DeferredRenderTechnique() = default; + void DeferredRenderTechnique::Clear(const SceneData& sceneData) const + { + NazaraUnused(sceneData); + } + bool DeferredRenderTechnique::Draw(const SceneData& sceneData) const { NazaraAssert(sceneData.viewer, "Invalid viewer"); diff --git a/src/Nazara/Graphics/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index 2db03b7f9..b2a63611d 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -49,18 +49,21 @@ namespace Nz m_spriteBuffer.Reset(VertexDeclaration::Get(VertexLayout_XYZ_Color_UV), &m_vertexBuffer); } - bool ForwardRenderTechnique::Draw(const SceneData& sceneData) const + void ForwardRenderTechnique::Clear(const SceneData& sceneData) const { - NazaraAssert(sceneData.viewer, "Invalid viewer"); - - m_renderQueue.Sort(sceneData.viewer); - Renderer::Enable(RendererParameter_DepthBuffer, true); Renderer::Enable(RendererParameter_DepthWrite, true); Renderer::Clear(RendererBuffer_Depth); if (sceneData.background) sceneData.background->Draw(sceneData.viewer); + } + + bool ForwardRenderTechnique::Draw(const SceneData& sceneData) const + { + NazaraAssert(sceneData.viewer, "Invalid viewer"); + + m_renderQueue.Sort(sceneData.viewer); for (auto& pair : m_renderQueue.layers) {