10 struct AccelerationStructureBuildInfo {
11 VkAccelerationStructureBuildGeometryInfoKHR geometry;
12 VkAccelerationStructureBuildSizesInfoKHR size;
13 const VkAccelerationStructureBuildRangeInfoKHR* range;
17 VkAccelerationStructureKHR accelerationStructure;
18 VkAccelerationStructureGeometryKHR geometry;
19 VkAccelerationStructureBuildRangeInfoKHR buildRange;
21 AccelerationStructureBuildInfo buildInfo;
43 VkBuildAccelerationStructureFlagsKHR flags);
54 MANDRILL_API
void update(VkBuildAccelerationStructureFlagsKHR flags);
72 static VkWriteDescriptorSetAccelerationStructureKHR as = {
73 .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
74 .accelerationStructureCount = 1,
75 .pAccelerationStructures = &mTLAS,
78 VkWriteDescriptorSet write = {
79 .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
81 .dstBinding = binding,
84 .descriptorType = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
96 MANDRILL_API
void createBLASes(VkBuildAccelerationStructureFlagsKHR flags);
104 MANDRILL_API
void createTLAS(VkBuildAccelerationStructureFlagsKHR flags,
bool update =
false);
106 ptr<Device> mpDevice;
107 std::weak_ptr<Scene> mwpScene;
109 VkAccelerationStructureKHR mTLAS;
110 VkAccelerationStructureGeometryKHR mGeometry;
111 VkAccelerationStructureBuildRangeInfoKHR mBuildRange;
113 AccelerationStructureBuildInfo mBuildInfo;
115 std::vector<BLAS> mBLASes;
117 ptr<Buffer> mpBLASBuffer;
118 ptr<Buffer> mpTLASBuffer;
119 ptr<Buffer> mpScratch;
120 ptr<Buffer> mpInstances;
Acceleration structure class for building and managing acceleration structures.
Definition AccelerationStructure.h:32
MANDRILL_API void update(VkBuildAccelerationStructureFlagsKHR flags)
Rebuild the top level of the acceleration structure to account for updates in instance transforms.
Definition AccelerationStructure.cpp:43
MANDRILL_API VkWriteDescriptorSet getWriteDescriptor(uint32_t binding) const
Get the write descriptor of the acceleration structure.
Definition AccelerationStructure.h:70
MANDRILL_API VkAccelerationStructureKHR getAccelerationStructure() const
Get the TLAS acceleration structure handle.
Definition AccelerationStructure.h:60
MANDRILL_API ~AccelerationStructure()
Destructor for acceleration structure.
Definition AccelerationStructure.cpp:32