From 9f3ed45b12ab541949682b80b2260604f2245e02 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 19 Sep 2022 17:48:10 -0400 Subject: [PATCH] temp patch --- engine/xe_render_system.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/engine/xe_render_system.cpp b/engine/xe_render_system.cpp index 17e62dc..8a28473 100644 --- a/engine/xe_render_system.cpp +++ b/engine/xe_render_system.cpp @@ -76,8 +76,9 @@ void XeRenderSystem::createPipelineLayout(XeDescriptorSetLayout &xeDescriptorSet pipelineLayoutInfo.pPushConstantRanges = nullptr; } + std::vector descriptorSetLayouts{xeDescriptorSetLayout.getDescriptorSetLayout()}; + if (uniformBufferDataSize > 0) { - std::vector descriptorSetLayouts{xeDescriptorSetLayout.getDescriptorSetLayout()}; pipelineLayoutInfo.setLayoutCount = static_cast(descriptorSetLayouts.size()); pipelineLayoutInfo.pSetLayouts = descriptorSetLayouts.data(); } else { @@ -115,13 +116,13 @@ void XeRenderSystem::renderGameObjects( uint32_t pushConstantSize, void* uniformBufferData, uint32_t uniformBufferSize) { - + uboBuffers[frameIndex]->writeToBuffer(uniformBufferData); uboBuffers[frameIndex]->flush(); - + xePipeline->bind(commandBuffer); - if(pushConstantData == NULL) { + if(pushConstantSize > 0) { vkCmdBindDescriptorSets( commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, @@ -135,14 +136,21 @@ void XeRenderSystem::renderGameObjects( for (auto& obj: gameObjects) { - if(pushConstantData == NULL) { + struct PushConstant { + glm::mat4 modelMatrix; + glm::mat4 normalMatrix; + }; + + PushConstant pc = PushConstant{obj.transform.mat4(), obj.transform.normalMatrix()}; + + if(pushConstantSize > 0) { vkCmdPushConstants( commandBuffer, pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0, pushConstantSize, - &pushConstantData); + &pc); } obj.model->bind(commandBuffer);