From 2c8de739bdbc67737e63eb44d16c87be5fd1a57a Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Fri, 10 Jan 2025 16:44:38 -0500 Subject: [PATCH] Copy camera --- .../Rendering/Vulkan/VulkanSceneRenderer.cpp | 35 ++++++++++++------- .../Rendering/Vulkan/VulkanSceneRenderer.h | 3 ++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp b/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp index e1aad85c..4321388b 100644 --- a/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp +++ b/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp @@ -84,20 +84,31 @@ void VkSceneRenderer::BeginScene(RenderContext inContext) } // Build camera view list - auto view = scene->m_Registry.view(); - for (auto e : view) { - auto [transform, camera] = view.get(e); - CameraView camData{}; - camData.View = camera.CameraInstance->GetTransform(); - camData.Projection = camera.CameraInstance->GetPerspective(); - camData.InverseView = glm::inverse(camData.Projection); - camData.InverseProjection = glm::inverse(camData.Projection); - camData.Position = transform.GetGlobalTransform()[3]; - camData.Near = camera.CameraInstance->Near; - camData.Far = camera.CameraInstance->Far; - GPUResources::Get().AddCamera(camera.ID, camData); + auto view = scene->m_Registry.view(); + for (auto e : view) + { + auto [transform, camera] = view.get(e); + CameraView camData{}; + camData.View = camera.CameraInstance->GetTransform(); + camData.Projection = camera.CameraInstance->GetPerspective(); + camData.InverseView = glm::inverse(camData.Projection); + camData.InverseProjection = glm::inverse(camData.Projection); + camData.Position = transform.GetGlobalTransform()[3]; + camData.Near = camera.CameraInstance->Near; + camData.Far = camera.CameraInstance->Far; + GPUResources::Get().AddCamera(camera.ID, camData); + } } + { + auto view = scene->m_Registry.view(); + for (auto e : view) + { + auto [transform, light] = view.get(e); + light.CalculateViewProjection() + } + } + // Execute light PassRenderContext passCtx = { }; diff --git a/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.h b/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.h index 02f37874..e21c98ce 100644 --- a/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.h +++ b/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.h @@ -132,6 +132,9 @@ namespace Nuake // New pipeline stuff RenderPipeline GBufferPipeline; RenderPipeline ShadowPipeline; + + UUID CurrentCamera; + public: VkSceneRenderer(); ~VkSceneRenderer();