Code cleanup
This commit is contained in:
parent
1b308da6b2
commit
efff932dbe
1 changed files with 14 additions and 13 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Vulkan glTF model and texture loading class based on tinyglTF (https://github.com/syoyo/tinygltf)
|
* Vulkan glTF model and texture loading class based on tinyglTF (https://github.com/syoyo/tinygltf)
|
||||||
*
|
*
|
||||||
* Copyright (C) 2018-2024 by Sascha Willems - www.saschawillems.de
|
* Copyright (C) 2018-2025 by Sascha Willems - www.saschawillems.de
|
||||||
*
|
*
|
||||||
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
*/
|
*/
|
||||||
|
|
@ -108,6 +108,7 @@ void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path
|
||||||
buffer = &gltfimage.image[0];
|
buffer = &gltfimage.image[0];
|
||||||
bufferSize = gltfimage.image.size();
|
bufferSize = gltfimage.image.size();
|
||||||
}
|
}
|
||||||
|
assert(buffer);
|
||||||
|
|
||||||
format = VK_FORMAT_R8G8B8A8_UNORM;
|
format = VK_FORMAT_R8G8B8A8_UNORM;
|
||||||
|
|
||||||
|
|
@ -140,7 +141,7 @@ void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path
|
||||||
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
|
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
|
||||||
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
|
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
|
||||||
|
|
||||||
uint8_t* data;
|
uint8_t* data{nullptr};
|
||||||
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void**)&data));
|
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void**)&data));
|
||||||
memcpy(data, buffer, bufferSize);
|
memcpy(data, buffer, bufferSize);
|
||||||
vkUnmapMemory(device->logicalDevice, stagingMemory);
|
vkUnmapMemory(device->logicalDevice, stagingMemory);
|
||||||
|
|
@ -337,7 +338,7 @@ void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path
|
||||||
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
|
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
|
||||||
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
|
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
|
||||||
|
|
||||||
uint8_t* data;
|
uint8_t* data{ nullptr };
|
||||||
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void**)&data));
|
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void**)&data));
|
||||||
memcpy(data, ktxTextureData, ktxTextureSize);
|
memcpy(data, ktxTextureData, ktxTextureSize);
|
||||||
vkUnmapMemory(device->logicalDevice, stagingMemory);
|
vkUnmapMemory(device->logicalDevice, stagingMemory);
|
||||||
|
|
@ -408,8 +409,6 @@ void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path
|
||||||
samplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT;
|
samplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT;
|
||||||
samplerInfo.compareOp = VK_COMPARE_OP_NEVER;
|
samplerInfo.compareOp = VK_COMPARE_OP_NEVER;
|
||||||
samplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
|
samplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
|
||||||
samplerInfo.maxAnisotropy = 1.0;
|
|
||||||
samplerInfo.anisotropyEnable = VK_FALSE;
|
|
||||||
samplerInfo.maxLod = (float)mipLevels;
|
samplerInfo.maxLod = (float)mipLevels;
|
||||||
samplerInfo.maxAnisotropy = 8.0f;
|
samplerInfo.maxAnisotropy = 8.0f;
|
||||||
samplerInfo.anisotropyEnable = VK_TRUE;
|
samplerInfo.anisotropyEnable = VK_TRUE;
|
||||||
|
|
@ -651,7 +650,7 @@ void vkglTF::Model::createEmptyTexture(VkQueue transferQueue)
|
||||||
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
|
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
|
||||||
|
|
||||||
// Copy texture data into staging buffer
|
// Copy texture data into staging buffer
|
||||||
uint8_t* data;
|
uint8_t* data{ nullptr };
|
||||||
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void**)&data));
|
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void**)&data));
|
||||||
memcpy(data, buffer, bufferSize);
|
memcpy(data, buffer, bufferSize);
|
||||||
vkUnmapMemory(device->logicalDevice, stagingMemory);
|
vkUnmapMemory(device->logicalDevice, stagingMemory);
|
||||||
|
|
@ -733,13 +732,13 @@ vkglTF::Model::~Model()
|
||||||
vkFreeMemory(device->logicalDevice, vertices.memory, nullptr);
|
vkFreeMemory(device->logicalDevice, vertices.memory, nullptr);
|
||||||
vkDestroyBuffer(device->logicalDevice, indices.buffer, nullptr);
|
vkDestroyBuffer(device->logicalDevice, indices.buffer, nullptr);
|
||||||
vkFreeMemory(device->logicalDevice, indices.memory, nullptr);
|
vkFreeMemory(device->logicalDevice, indices.memory, nullptr);
|
||||||
for (auto texture : textures) {
|
for (auto& texture : textures) {
|
||||||
texture.destroy();
|
texture.destroy();
|
||||||
}
|
}
|
||||||
for (auto node : nodes) {
|
for (auto& node : nodes) {
|
||||||
delete node;
|
delete node;
|
||||||
}
|
}
|
||||||
for (auto skin : skins) {
|
for (auto& skin : skins) {
|
||||||
delete skin;
|
delete skin;
|
||||||
}
|
}
|
||||||
if (descriptorSetLayoutUbo != VK_NULL_HANDLE) {
|
if (descriptorSetLayoutUbo != VK_NULL_HANDLE) {
|
||||||
|
|
@ -885,8 +884,10 @@ void vkglTF::Model::loadNode(vkglTF::Node *parent, const tinygltf::Node &node, u
|
||||||
switch (numColorComponents) {
|
switch (numColorComponents) {
|
||||||
case 3:
|
case 3:
|
||||||
vert.color = glm::vec4(glm::make_vec3(&bufferColors[v * 3]), 1.0f);
|
vert.color = glm::vec4(glm::make_vec3(&bufferColors[v * 3]), 1.0f);
|
||||||
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
vert.color = glm::make_vec4(&bufferColors[v * 4]);
|
vert.color = glm::make_vec4(&bufferColors[v * 4]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -1256,7 +1257,7 @@ void vkglTF::Model::loadFromFile(std::string filename, vks::VulkanDevice *device
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto extension : gltfModel.extensionsUsed) {
|
for (auto& extension : gltfModel.extensionsUsed) {
|
||||||
if (extension == "KHR_materials_pbrSpecularGlossiness") {
|
if (extension == "KHR_materials_pbrSpecularGlossiness") {
|
||||||
std::cout << "Required extension: " << extension;
|
std::cout << "Required extension: " << extension;
|
||||||
metallicRoughnessWorkflow = false;
|
metallicRoughnessWorkflow = false;
|
||||||
|
|
@ -1273,7 +1274,7 @@ void vkglTF::Model::loadFromFile(std::string filename, vks::VulkanDevice *device
|
||||||
struct StagingBuffer {
|
struct StagingBuffer {
|
||||||
VkBuffer buffer;
|
VkBuffer buffer;
|
||||||
VkDeviceMemory memory;
|
VkDeviceMemory memory;
|
||||||
} vertexStaging, indexStaging;
|
} vertexStaging{}, indexStaging{};
|
||||||
|
|
||||||
// Create staging buffers
|
// Create staging buffers
|
||||||
// Vertex data
|
// Vertex data
|
||||||
|
|
@ -1332,12 +1333,12 @@ void vkglTF::Model::loadFromFile(std::string filename, vks::VulkanDevice *device
|
||||||
// Setup descriptors
|
// Setup descriptors
|
||||||
uint32_t uboCount{ 0 };
|
uint32_t uboCount{ 0 };
|
||||||
uint32_t imageCount{ 0 };
|
uint32_t imageCount{ 0 };
|
||||||
for (auto node : linearNodes) {
|
for (auto& node : linearNodes) {
|
||||||
if (node->mesh) {
|
if (node->mesh) {
|
||||||
uboCount++;
|
uboCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto material : materials) {
|
for (auto& material : materials) {
|
||||||
if (material.baseColorTexture != nullptr) {
|
if (material.baseColorTexture != nullptr) {
|
||||||
imageCount++;
|
imageCount++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue