diff --git a/openVulkanoCpp/Scene/Camera.hpp b/openVulkanoCpp/Scene/Camera.hpp index 8c26a15..b883b92 100644 --- a/openVulkanoCpp/Scene/Camera.hpp +++ b/openVulkanoCpp/Scene/Camera.hpp @@ -19,6 +19,7 @@ namespace openVulkanoCpp float width, height, nearPlane, farPlane; Math::Matrix4f viewProjection, view, projection; + Math::Vector4f camPosition; Camera() : width(0), height(0), nearPlane(0), farPlane(0), projection(1), view(1), viewProjection(1) {} @@ -86,6 +87,7 @@ namespace openVulkanoCpp { Node::UpdateWorldMatrix(parentWorldMat); view = Math::Utils::inverse(GetWorldMatrix()); + camPosition = GetWorldMatrix()[3]; UpdateViewProjectionMatrix(); } diff --git a/openVulkanoCpp/Vulkan/Pipeline.hpp b/openVulkanoCpp/Vulkan/Pipeline.hpp index 5cd6ba1..b40b579 100644 --- a/openVulkanoCpp/Vulkan/Pipeline.hpp +++ b/openVulkanoCpp/Vulkan/Pipeline.hpp @@ -29,7 +29,7 @@ namespace openVulkanoCpp private: void CreatePipelineLayout() { - vk::PushConstantRange camPushConstantDesc = { vk::ShaderStageFlagBits::eVertex, 0, 3 * sizeof(Math::Matrix4f) }; + vk::PushConstantRange camPushConstantDesc = { vk::ShaderStageFlagBits::eVertex, 0, 3 * sizeof(Math::Matrix4f) + sizeof(Math::Vector4f) }; vk::DescriptorSetLayoutBinding nodeLayoutBinding = { 0, vk::DescriptorType::eUniformBufferDynamic, 1, vk::ShaderStageFlagBits::eVertex }; std::array layoutBindings = { nodeLayoutBinding }; vk::DescriptorSetLayoutCreateInfo dslci = { {}, layoutBindings.size(), layoutBindings.data() }; diff --git a/openVulkanoCpp/Vulkan/Renderer.cpp b/openVulkanoCpp/Vulkan/Renderer.cpp index 888eadd..d0ebde8 100644 --- a/openVulkanoCpp/Vulkan/Renderer.cpp +++ b/openVulkanoCpp/Vulkan/Renderer.cpp @@ -147,7 +147,7 @@ namespace openVulkanoCpp::Vulkan vk::CommandBufferInheritanceInfo inheritance = { context.swapChainRenderPass.renderPass, 0, context.swapChainRenderPass.GetFrameBuffer()->GetCurrentFrameBuffer() }; cmdHelper->cmdBuffer.begin(vk::CommandBufferBeginInfo{ vk::CommandBufferUsageFlagBits::eOneTimeSubmit | vk::CommandBufferUsageFlagBits::eRenderPassContinue, &inheritance }); shader->Record(cmdHelper->cmdBuffer, currentImageId); - cmdHelper->cmdBuffer.pushConstants(context.pipeline.pipelineLayout, vk::ShaderStageFlagBits::eVertex, 0, 3 * sizeof(Math::Matrix4f), &scene->GetCamera()->GetViewProjectionMatrix()); + cmdHelper->cmdBuffer.pushConstants(context.pipeline.pipelineLayout, vk::ShaderStageFlagBits::eVertex, 0, 3 * sizeof(Math::Matrix4f) + sizeof(Math::Vector4f), &scene->GetCamera()->GetViewProjectionMatrix()); Scene::Drawable** drawablePointer; while((drawablePointer = jobQueue->Pop()) != nullptr) {