update
							parent
							
								
									2eda8f2493
								
							
						
					
					
						commit
						104ebaa0a7
					
				| 
						 | 
				
			
			@ -37,3 +37,4 @@ data/
 | 
			
		|||
# vs compile file
 | 
			
		||||
out/
 | 
			
		||||
.vs/
 | 
			
		||||
*.zip
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<uint32_t>(indexBuffer.size());
 | 
			
		||||
				uint32_t vertexStart = static_cast<uint32_t>(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 };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue