From c808d2f061c3b13393cd97f7f460ca725b57719c Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sat, 16 Sep 2023 01:31:42 -0400 Subject: [PATCH] Fixed some faces dissapearing on some models Serializing environement ambient color --- .gitmodules | 3 +++ Nuake/dependencies/optick | 1 + Nuake/src/Rendering/SceneRenderer.cpp | 4 +++- Nuake/src/Scene/Lighting/Environment.cpp | 3 +++ Nuake/src/Scene/Scene.cpp | 8 +++----- Nuake/src/Scene/Systems/AnimationSystem.cpp | 4 ++-- 6 files changed, 15 insertions(+), 8 deletions(-) create mode 160000 Nuake/dependencies/optick diff --git a/.gitmodules b/.gitmodules index 52a5b4d3..24ab4c6e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "Nuake/dependencies/soloud"] path = Nuake/dependencies/soloud url = https://github.com/antopilo/soloud.git +[submodule "Nuake/dependencies/optick"] + path = Nuake/dependencies/optick + url = https://github.com/bombomby/optick.git diff --git a/Nuake/dependencies/optick b/Nuake/dependencies/optick new file mode 160000 index 00000000..8abd28de --- /dev/null +++ b/Nuake/dependencies/optick @@ -0,0 +1 @@ +Subproject commit 8abd28dee1a4034c973a3d32cd1777118e72df7e diff --git a/Nuake/src/Rendering/SceneRenderer.cpp b/Nuake/src/Rendering/SceneRenderer.cpp index 64e70822..0dddd99a 100644 --- a/Nuake/src/Rendering/SceneRenderer.cpp +++ b/Nuake/src/Rendering/SceneRenderer.cpp @@ -279,7 +279,7 @@ namespace Nuake gBufferShader->SetUniformMat4f("u_View", mView); // Models - glCullFace(GL_FRONT); + glDisable(GL_CULL_FACE); auto view = scene.m_Registry.view(); for (auto e : view) { @@ -296,6 +296,7 @@ namespace Nuake Renderer::Flush(gBufferShader, false); + // Quake BSPs auto quakeView = scene.m_Registry.view(); for (auto e : quakeView) @@ -310,6 +311,7 @@ namespace Nuake Renderer::SubmitMesh(b, transform.GetGlobalTransform(), (uint32_t)e); } } + Renderer::Flush(gBufferShader, false); // Sprites diff --git a/Nuake/src/Scene/Lighting/Environment.cpp b/Nuake/src/Scene/Lighting/Environment.cpp index 282d4795..87b3126a 100644 --- a/Nuake/src/Scene/Lighting/Environment.cpp +++ b/Nuake/src/Scene/Lighting/Environment.cpp @@ -52,6 +52,7 @@ namespace Nuake { { BEGIN_SERIALIZE(); SERIALIZE_VAL(CurrentSkyType); + SERIALIZE_VEC4(AmbientColor); SERIALIZE_VAL(VolumetricFog); SERIALIZE_VAL(VolumetricStepCount); SERIALIZE_VEC4(AmbientColor); @@ -63,6 +64,8 @@ namespace Nuake { { if (j.contains("CurrentSkyType")) CurrentSkyType = j["CurrentSkyType"]; + if (j.contains("AmbientColor")) + DESERIALIZE_VEC4(j["AmbientColor"], AmbientColor); if (j.contains("VolumetricFog")) VolumetricFog = j["VolumetricFog"]; if (j.contains("VolumetricStepCount")) diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index 59fb078d..52e11da7 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -101,8 +101,7 @@ namespace Nuake } Logger::Log("Entity not found with id: " + std::to_string(id), "scene", CRITICAL); - - assert("Entity not found"); + return Entity{ (entt::entity)0, this }; } bool Scene::OnInit() @@ -388,7 +387,6 @@ namespace Nuake sceneCopy->Path = Path; json serializedScene = Serialize(); - sceneCopy->Deserialize(serializedScene); return sceneCopy; } @@ -485,7 +483,7 @@ namespace Nuake Entity skeletonRootEntity = CreateEntity(skeletonRoot.Name); skeletonRootEntity.AddComponent().Name = skeletonRoot.Name; - skeletonRoot.EntityHandle = skeletonRootEntity.GetHandle(); + skeletonRoot.EntityHandle = skeletonRootEntity.GetID(); entity.AddChild(skeletonRootEntity); @@ -511,7 +509,7 @@ namespace Nuake boneEntity.AddComponent(); entity.AddChild(boneEntity); - c.EntityHandle = boneEntity.GetHandle(); + c.EntityHandle = boneEntity.GetID(); Vector3 bonePosition; Quat boneRotation; diff --git a/Nuake/src/Scene/Systems/AnimationSystem.cpp b/Nuake/src/Scene/Systems/AnimationSystem.cpp index 75e8a4a2..9aa7fdd2 100644 --- a/Nuake/src/Scene/Systems/AnimationSystem.cpp +++ b/Nuake/src/Scene/Systems/AnimationSystem.cpp @@ -50,9 +50,9 @@ namespace Nuake auto& animationTrack = animation->GetTrack(boneName); Entity& boneEntity = m_Scene->GetEntity(boneName); - Entity& boneEnt = Entity{ (entt::entity)bone.EntityHandle, m_Scene }; + Entity& boneEnt = m_Scene->GetEntityByID(bone.EntityHandle); ///assert(boneEnt.GetHandle() == boneEntity.GetHandle()); - if (boneEnt.GetHandle() != 0) + if (boneEnt.IsValid()) { auto& transformComponent = boneEnt.GetComponent(); bone.FinalTransform = transformComponent.GetGlobalTransform() * bone.Offset;