From 289472dc9f44ea288f6fb65e4d86b1a29fa60439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 28 Jul 2021 13:11:20 +0200 Subject: [PATCH] Graphics/ForwardFramePipeline: Minor fixes --- include/Nazara/Graphics/ForwardFramePipeline.hpp | 3 ++- include/Nazara/Graphics/RenderSubmesh.inl | 1 + src/Nazara/Graphics/ForwardFramePipeline.cpp | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Graphics/ForwardFramePipeline.hpp b/include/Nazara/Graphics/ForwardFramePipeline.hpp index cbe8a1cef..bf211413d 100644 --- a/include/Nazara/Graphics/ForwardFramePipeline.hpp +++ b/include/Nazara/Graphics/ForwardFramePipeline.hpp @@ -49,7 +49,9 @@ namespace Nz private: BakedFrameGraph BuildFrameGraph(); + void RegisterMaterialPass(MaterialPass* material); + void ProcessRenderQueue(CommandBufferBuilder& builder, const RenderQueue& renderQueue); void UnregisterMaterialPass(MaterialPass* material); struct MaterialData @@ -80,7 +82,6 @@ namespace Nz std::vector> m_depthPrepassRenderElements; std::vector> m_forwardRenderElements; std::vector> m_elementRenderers; - std::vector m_temporaryElementList; BakedFrameGraph m_bakedFrameGraph; RenderQueueRegistry m_depthPrepassRegistry; RenderQueueRegistry m_forwardRegistry; diff --git a/include/Nazara/Graphics/RenderSubmesh.inl b/include/Nazara/Graphics/RenderSubmesh.inl index fe4fa1d9f..b329d9c17 100644 --- a/include/Nazara/Graphics/RenderSubmesh.inl +++ b/include/Nazara/Graphics/RenderSubmesh.inl @@ -31,6 +31,7 @@ namespace Nz // - Layer (8bits) // - Pipeline (16bits) // - VertexBuffer (8bits) + // - ?? (24bits) - Depth? return (elementType & 0xF) << 60 | (layerIndex & 0xFF) << 52 | diff --git a/src/Nazara/Graphics/ForwardFramePipeline.cpp b/src/Nazara/Graphics/ForwardFramePipeline.cpp index b047954bf..a7ee3a9ad 100644 --- a/src/Nazara/Graphics/ForwardFramePipeline.cpp +++ b/src/Nazara/Graphics/ForwardFramePipeline.cpp @@ -272,10 +272,14 @@ namespace Nz std::size_t matCount = instancedRenderable->GetMaterialCount(); for (std::size_t i = 0; i < matCount; ++i) { + if (MaterialPass* pass = instancedRenderable->GetMaterial(i)->GetPass("DepthPass")) + UnregisterMaterialPass(pass); + if (MaterialPass* pass = instancedRenderable->GetMaterial(i)->GetPass("ForwardPass")) UnregisterMaterialPass(pass); } + m_rebuildDepthPrepass = true; m_rebuildForwardPass = true; }