From bdd9405f88b812045bdb18a9ee17cf23ef9c5e46 Mon Sep 17 00:00:00 2001 From: ink-soul Date: Thu, 18 May 2023 15:42:04 +0800 Subject: [PATCH] fix shading error (no complete yet) --- homework/homework1/homework1.cpp | 13 ++++++++----- homework/homework1/homework1.h | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/homework/homework1/homework1.cpp b/homework/homework1/homework1.cpp index 498f666..30d11d1 100644 --- a/homework/homework1/homework1.cpp +++ b/homework/homework1/homework1.cpp @@ -838,17 +838,20 @@ void VulkanExample::getEnabledFeatures() VK_CHECK_RESULT(vkCreateDescriptorPool(device, &descriptorPoolInfo, nullptr, &descriptorPool)); // Descriptor set layouts - VkDescriptorSetLayoutBinding setLayoutBinding{}; - VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCI = vks::initializers::descriptorSetLayoutCreateInfo(&setLayoutBinding, 1); + + VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCI = vks::initializers::descriptorSetLayoutCreateInfo(setLayoutBinding); // Descriptor set layout for passing matrices + setLayoutBinding = vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_VERTEX_BIT, 0); VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device, &descriptorSetLayoutCI, nullptr, &descriptorSetLayouts.matrices)); // Descriptor set layout for passing material textures - setLayoutBinding = vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT, 0); + VkDescriptorSetLayoutBinding setLayoutBinding = vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT, 0); + descriptorSetLayoutCI = vks::initializers::descriptorSetLayoutCreateInfo(&setLayoutBinding, 1); VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device, &descriptorSetLayoutCI, nullptr, &descriptorSetLayouts.textures)); + // Descriptor set layout for passing skin joint matrices setLayoutBinding = vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_SHADER_STAGE_VERTEX_BIT, 0); VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device, &descriptorSetLayoutCI, nullptr, &descriptorSetLayouts.jointMatrices)); @@ -974,7 +977,7 @@ void VulkanExample::getEnabledFeatures() { shaderData.values.projection = camera.matrices.perspective; shaderData.values.model = camera.matrices.view; - + shaderData.values.viewPos = camera.viewPos; memcpy(shaderData.buffer.mapped, &shaderData.values, sizeof(shaderData.values)); } @@ -997,7 +1000,7 @@ void VulkanExample::getEnabledFeatures() } if (!paused) { - glTFModel.updateAnimation(frameTimer,shaderData.buffer); + glTFModel.updateAnimation(frameTimer,shaderData.skinSSBO); } } diff --git a/homework/homework1/homework1.h b/homework/homework1/homework1.h index a4b30be..2a97b4d 100644 --- a/homework/homework1/homework1.h +++ b/homework/homework1/homework1.h @@ -208,6 +208,7 @@ public: glm::vec4 lightPos = glm::vec4(5.0f, 5.0f, 5.0f, 1.0f); glm::vec4 viewPos; } values; + vks::Buffer skinSSBO; } shaderData; struct Pipelines {