diff --git a/.gitignore b/.gitignore index 44fb2b6..78bbeaf 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ data/ # vs compile file out/ .vs/ +*.zip diff --git a/homework/homework1/homework1.cpp b/homework/homework1/homework1.cpp index 498f666..4705722 100644 --- a/homework/homework1/homework1.cpp +++ b/homework/homework1/homework1.cpp @@ -234,7 +234,10 @@ VulkanglTFModel::~VulkanglTFModel() memcpy(skins[i].inverseBindMatrices.data(), &buffer.data[accessor.byteOffset + bufferview.byteOffset], accessor.count * sizeof(glm::mat4)); //create a host visible shader buffer to store inverse bind matrices for this skin - VK_CHECK_RESULT(vulkanDevice->createBuffer(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + VK_CHECK_RESULT( + vulkanDevice->createBuffer( + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, &skins[i].ssbo, sizeof(glm::mat4) * skins[i].inverseBindMatrices.size(), skins[i].inverseBindMatrices.data())); @@ -327,9 +330,12 @@ VulkanglTFModel::~VulkanglTFModel() uint32_t firstIndex = static_cast(indexBuffer.size()); uint32_t vertexStart = static_cast(vertexBuffer.size()); uint32_t indexCount = 0; + //vertices const float* positionBuffer = nullptr; const float* normalsBuffer = nullptr; const float* texcoordsBuffer = nullptr; + const float* tangentsBuffer = nullptr; + //skin joints const float* jointWeightsBuffer = nullptr; const uint16_t * jointIndicesBuffer = nullptr; size_t vertexCount = 0; @@ -377,9 +383,9 @@ VulkanglTFModel::~VulkanglTFModel() { Vertex vert{}; vert.pos = glm::vec4(glm::make_vec3(&positionBuffer[v * 3]), 1.0f); - vert.uv = texcoordsBuffer ? glm::make_vec2(&texcoordsBuffer[v*2]):glm::vec4(0.0f); + vert.uv = texcoordsBuffer ? glm::make_vec2(&texcoordsBuffer[v*2]) : glm::vec3(0.0f); vert.normal = glm::normalize(glm::vec3(normalsBuffer ? glm::make_vec3(&normalsBuffer[v * 3]) : glm::vec3(0.0f))); - vert.color = glm::vec3(1.0f); + vert.color = glm::vec3(1.0f,1.0f,nodeIndex); vert.jointIndices = hasSkin ? glm::vec4(glm::make_vec4(&jointIndicesBuffer[v * 4])) : glm::vec4(0.0f); vert.jointWeights = hasSkin ? glm::make_vec4(&jointWeightsBuffer[v * 4]) : glm::vec4(0.0f); vertexBuffer.push_back(vert); @@ -597,7 +603,7 @@ VulkanglTFModel::~VulkanglTFModel() } } } - for (auto& child : node.children) { + for (auto &child : node.children) { drawNode(commandBuffer, pipelineLayout, *child); } } @@ -645,6 +651,7 @@ VulkanExample::~VulkanExample() shaderData.buffer.destroy(); + } void VulkanExample::getEnabledFeatures() @@ -660,7 +667,7 @@ void VulkanExample::getEnabledFeatures() VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo(); VkClearValue clearValues[2]; - + clearValues[0].color = defaultClearColor; clearValues[0].color = { { 0.25f, 0.25f, 0.25f, 1.0f } };; clearValues[1].depthStencil = { 1.0f, 0 };