From ab869348f1f85f9af16e4c25df174c4ef5a0c648 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Mon, 14 Nov 2022 00:59:21 +0800 Subject: [PATCH 1/4] Added code that only renders objects which are active --- .../Graphics/MiddleEnd/Batching/SHBatch.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 1829096f..7465617d 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -27,6 +27,7 @@ of DigiPen Institute of Technology is prohibited. #include "Math/Transform/SHTransformComponent.h" #include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" #include "Graphics/Descriptors/SHVkDescriptorPool.h" +#include "Scene/SHSceneManager.h" namespace SHADE { @@ -223,7 +224,22 @@ namespace SHADE auto transform = SHComponentManager::GetComponent(rendId); if (transform) { - transformData.emplace_back(transform->GetTRS()); + if (SHSceneManager::CheckNodeAndComponentsActive(rendId)) + { + transformData.emplace_back(transform->GetTRS()); + } + else + { + // Should be deactivated + static const SHMatrix ZERO_MTX = + { + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f + }; + transformData.emplace_back(ZERO_MTX); + } } else { From 27413c380e5395f6fb0b761813b521db769ec445 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Fri, 18 Nov 2022 21:59:18 +0800 Subject: [PATCH 2/4] Renderables now no longer render if disabled --- .../Graphics/MiddleEnd/Batching/SHBatch.cpp | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 0db46a84..47a96583 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -440,15 +440,30 @@ namespace SHADE for (auto rendId : subBatch.Renderables) { // Transform - auto transform = SHComponentManager::GetComponent_s(rendId); - if (!transform) + auto transform = SHComponentManager::GetComponent_s(rendId); + if (transform) { - SHLOG_WARNING("[SHBatch] Entity contianing a SHRenderable with no SHTransformComponent found!"); - transformData.emplace_back(); + if (SHSceneManager::CheckNodeAndComponentsActive(rendId)) + { + transformData.emplace_back(transform->GetTRS()); + } + else + { + // Should be deactivated + static const SHMatrix ZERO_MTX = + { + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f + }; + transformData.emplace_back(ZERO_MTX); + } } else { - transformData.emplace_back(transform->GetTRS()); + SHLOG_WARNING("[SHBatch] Entity contianing a SHRenderable with no SHTransformComponent found!"); + transformData.emplace_back(); } const SHRenderable* renderable = SHComponentManager::GetComponent(rendId); From daa6247bffbee17ae241bb8d8a7ad238888c2a57 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Sat, 19 Nov 2022 15:03:49 +0800 Subject: [PATCH 3/4] Fixed premake bug where project configuration tag was missing --- SHADE_CSharp/premake5.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SHADE_CSharp/premake5.lua b/SHADE_CSharp/premake5.lua index 39ef8281..8844b84c 100644 --- a/SHADE_CSharp/premake5.lua +++ b/SHADE_CSharp/premake5.lua @@ -50,6 +50,9 @@ project "SHADE_CSharp" function platformsElementCS(cfg) _p(2,'x64') end + function configElementCS(cfg) + _p(2,'Debug;Release;Publish') + end function docsElementCS(cfg) _p(2,'true') end @@ -59,6 +62,6 @@ project "SHADE_CSharp" premake.override(premake.vstudio.cs2005.elements, "projectProperties", function (oldfn, cfg) return table.join(oldfn(cfg), { - platformsElementCS, docsElementCS, docsLocationElementCS, + platformsElementCS, configElementCS, docsElementCS, docsLocationElementCS, }) end) \ No newline at end of file From f3a44d2ead6da72ed543ae1e0eb4129134ef4685 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Sat, 19 Nov 2022 16:11:07 +0800 Subject: [PATCH 4/4] Fixed crash caused when loading more than one graphics pipeline --- SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 2a2b66d4..5b3bfac2 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -49,7 +49,7 @@ namespace SHADE , referencedMatInstances { std::move(rhs.referencedMatInstances) } , matBufferDirty { std::move(rhs.matBufferDirty) } , subBatches { std::move(rhs.subBatches) } - , drawData { std::move(drawData) } + , drawData { std::move(rhs.drawData) } , transformData { std::move(rhs.transformData) } , instancedIntegerData { std::move(rhs.instancedIntegerData) } , matPropsData { std::move(rhs.matPropsData) } @@ -80,7 +80,7 @@ namespace SHADE referencedMatInstances = std::move(rhs.referencedMatInstances); matBufferDirty = std::move(rhs.matBufferDirty) ; subBatches = std::move(rhs.subBatches) ; - drawData = std::move(drawData) ; + drawData = std::move(rhs.drawData) ; transformData = std::move(rhs.transformData) ; instancedIntegerData = std::move(rhs.instancedIntegerData) ; matPropsData = std::move(rhs.matPropsData) ;