Fix descriptor set

Fix pNext chaining
Code cleanupFixes #1088
Fixes #1089
This commit is contained in:
Sascha Willems 2023-11-19 11:15:21 +01:00
parent 1201b8d10c
commit ef50bf9b8f

View file

@ -6,10 +6,6 @@
* 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)
*/ */
/*
* @todo
*/
#include "VulkanRaytracingSample.h" #include "VulkanRaytracingSample.h"
#define VK_GLTF_MATERIAL_IDS #define VK_GLTF_MATERIAL_IDS
#include "VulkanglTFModel.h" #include "VulkanglTFModel.h"
@ -75,12 +71,6 @@ public:
enabledDeviceExtensions.push_back(VK_KHR_MAINTENANCE3_EXTENSION_NAME); enabledDeviceExtensions.push_back(VK_KHR_MAINTENANCE3_EXTENSION_NAME);
enabledDeviceExtensions.push_back(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME); enabledDeviceExtensions.push_back(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME);
physicalDeviceDescriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing = VK_TRUE;
physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray = VK_TRUE;
physicalDeviceDescriptorIndexingFeatures.descriptorBindingVariableDescriptorCount = VK_TRUE;
deviceCreatepNextChain = &physicalDeviceDescriptorIndexingFeatures;
} }
~VulkanExample() ~VulkanExample()
@ -98,6 +88,7 @@ public:
shaderBindingTables.miss.destroy(); shaderBindingTables.miss.destroy();
shaderBindingTables.hit.destroy(); shaderBindingTables.hit.destroy();
ubo.destroy(); ubo.destroy();
geometryNodesBuffer.destroy();
} }
void createAccelerationStructureBuffer(AccelerationStructure &accelerationStructure, VkAccelerationStructureBuildSizesInfoKHR buildSizeInfo) void createAccelerationStructureBuffer(AccelerationStructure &accelerationStructure, VkAccelerationStructureBuildSizesInfoKHR buildSizeInfo)
@ -220,7 +211,7 @@ public:
accelerationStructureBuildGeometryInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR; accelerationStructureBuildGeometryInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
accelerationStructureBuildGeometryInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR; accelerationStructureBuildGeometryInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR;
accelerationStructureBuildGeometryInfo.flags = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR; accelerationStructureBuildGeometryInfo.flags = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR;
accelerationStructureBuildGeometryInfo.geometryCount = geometries.size(); accelerationStructureBuildGeometryInfo.geometryCount = static_cast<uint32_t>(geometries.size());
accelerationStructureBuildGeometryInfo.pGeometries = geometries.data(); accelerationStructureBuildGeometryInfo.pGeometries = geometries.data();
const uint32_t numTriangles = maxPrimitiveCounts[0]; const uint32_t numTriangles = maxPrimitiveCounts[0];
@ -373,7 +364,6 @@ public:
VkAccelerationStructureDeviceAddressInfoKHR accelerationDeviceAddressInfo{}; VkAccelerationStructureDeviceAddressInfoKHR accelerationDeviceAddressInfo{};
accelerationDeviceAddressInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR; accelerationDeviceAddressInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
accelerationDeviceAddressInfo.accelerationStructure = topLevelAS.handle; accelerationDeviceAddressInfo.accelerationStructure = topLevelAS.handle;
topLevelAS.deviceAddress = vkGetAccelerationStructureDeviceAddressKHR(device, &accelerationDeviceAddressInfo);
deleteScratchBuffer(scratchBuffer); deleteScratchBuffer(scratchBuffer);
instancesBuffer.destroy(); instancesBuffer.destroy();
@ -447,7 +437,6 @@ public:
0, 0,
0, 0,
0, 0,
0,
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
}; };
setLayoutBindingFlags.pBindingFlags = descriptorBindingFlags.data(); setLayoutBindingFlags.pBindingFlags = descriptorBindingFlags.data();
@ -734,7 +723,13 @@ public:
enabledAccelerationStructureFeatures.accelerationStructure = VK_TRUE; enabledAccelerationStructureFeatures.accelerationStructure = VK_TRUE;
enabledAccelerationStructureFeatures.pNext = &enabledRayTracingPipelineFeatures; enabledAccelerationStructureFeatures.pNext = &enabledRayTracingPipelineFeatures;
deviceCreatepNextChain = &enabledAccelerationStructureFeatures; physicalDeviceDescriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing = VK_TRUE;
physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray = VK_TRUE;
physicalDeviceDescriptorIndexingFeatures.descriptorBindingVariableDescriptorCount = VK_TRUE;
physicalDeviceDescriptorIndexingFeatures.pNext = &enabledAccelerationStructureFeatures;
deviceCreatepNextChain = &physicalDeviceDescriptorIndexingFeatures;
enabledFeatures.samplerAnisotropy = VK_TRUE; enabledFeatures.samplerAnisotropy = VK_TRUE;
} }