From a3f343774264c0a92769052426f2a407bd8fa569 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sat, 2 Nov 2024 22:14:10 -0400 Subject: [PATCH] Actually fill the whole Dawntrail bone buffer --- renderer/include/drawobject.h | 4 ++-- renderer/include/shaderstructs.h | 11 +++-------- renderer/src/gamerenderer.cpp | 5 +++-- renderer/src/rendermanager.cpp | 2 +- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/renderer/include/drawobject.h b/renderer/include/drawobject.h index 81c1ff6..26e173c 100644 --- a/renderer/include/drawobject.h +++ b/renderer/include/drawobject.h @@ -35,7 +35,7 @@ struct DrawObject { physis_MDL model; std::vector parts; - std::array boneData; + std::array boneData; // JOINT_MATRIX_SIZE_DAWNTRAIL std::vector materials; glm::vec3 position; bool skinned = false; @@ -44,4 +44,4 @@ struct DrawObject { uint16_t to_body_id = 101; Buffer boneInfoBuffer; -}; \ No newline at end of file +}; diff --git a/renderer/include/shaderstructs.h b/renderer/include/shaderstructs.h index ec8a0ba..8e4aefc 100644 --- a/renderer/include/shaderstructs.h +++ b/renderer/include/shaderstructs.h @@ -16,13 +16,8 @@ struct CameraParameter { glm::vec4 m_LookAtVector; }; -struct JointMatrixArrayARR { - glm::mat3x4 g_JointMatrixArray[64]; -}; - -struct JointMatrixArrayDawntrail { - glm::mat3x4 g_JointMatrixArray[768]; -}; +const int JOINT_MATRIX_SIZE_ARR = 64; +const int JOINT_MATRIX_SIZE_DAWNTRAIL = 768; struct CameraLight { glm::vec4 m_DiffuseSpecular; @@ -106,4 +101,4 @@ struct AmbientParameters { // Dawntrail, unknown purpose struct ShaderTypeParameter { glm::vec4 m[2044]; -}; \ No newline at end of file +}; diff --git a/renderer/src/gamerenderer.cpp b/renderer/src/gamerenderer.cpp index 1778bb4..16bb0ed 100644 --- a/renderer/src/gamerenderer.cpp +++ b/renderer/src/gamerenderer.cpp @@ -291,12 +291,13 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, Camera &camera, Scene & // copy bone data { - const size_t bufferSize = sizeof(glm::mat3x4) * 64; + const int jointMatrixSize = m_dawntrailMode ? JOINT_MATRIX_SIZE_DAWNTRAIL : JOINT_MATRIX_SIZE_ARR; + const size_t bufferSize = sizeof(glm::mat3x4) * jointMatrixSize; void *mapped_data = nullptr; vkMapMemory(m_device.device, model.boneInfoBuffer.memory, 0, bufferSize, 0, &mapped_data); std::vector newBoneData(model.boneData.size()); - for (int i = 0; i < 64; i++) { + for (int i = 0; i < jointMatrixSize; i++) { newBoneData[i] = glm::transpose(model.boneData[i]); } diff --git a/renderer/src/rendermanager.cpp b/renderer/src/rendermanager.cpp index 50804f3..a05eace 100644 --- a/renderer/src/rendermanager.cpp +++ b/renderer/src/rendermanager.cpp @@ -531,7 +531,7 @@ void RenderManager::reloadDrawObject(DrawObject &DrawObject, uint32_t lod) DrawObject.parts.push_back(renderPart); } - const size_t bufferSize = sizeof(glm::mat4) * 128; + const size_t bufferSize = sizeof(glm::mat4) * JOINT_MATRIX_SIZE_DAWNTRAIL; DrawObject.boneInfoBuffer = m_device->createBuffer(bufferSize, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT); }