| 2016 | } |
| 2017 | |
| 2018 | vkt::as::BuildGeometryInfoKHR CreateTLAS(vkt::Device& device, std::vector<vkt::as::GeometryKHR>&& blas_vec) { |
| 2019 | vkt::as::BuildGeometryInfoKHR tlas(&device); |
| 2020 | |
| 2021 | tlas.SetType(VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR); |
| 2022 | tlas.SetBuildType(VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR); |
| 2023 | tlas.SetMode(VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR); |
| 2024 | |
| 2025 | tlas.SetGeometries(std::move(blas_vec)); |
| 2026 | tlas.SetBuildRanges(tlas.GetBuildRangeInfosFromGeometries()); |
| 2027 | |
| 2028 | // Set source and destination acceleration structures info. Does not create handles, it is done in Build() |
| 2029 | tlas.SetSrcAS(vkt::as::blueprint::AccelStructNull(device)); |
| 2030 | const VkDeviceSize dst_as_size = tlas.GetSizeInfo().accelerationStructureSize; |
| 2031 | auto dst_as = vkt::as::blueprint::AccelStructSimpleOnDeviceTopLevel(device, dst_as_size); |
| 2032 | tlas.SetDstAS(std::move(dst_as)); |
| 2033 | tlas.SetUpdateDstAccelStructSizeBeforeBuild(true); |
| 2034 | |
| 2035 | tlas.SetInfoCount(1); |
| 2036 | tlas.SetNullInfos(false); |
| 2037 | tlas.SetNullBuildRangeInfos(false); |
| 2038 | |
| 2039 | return tlas; |
| 2040 | } |
| 2041 | |
| 2042 | } // namespace blueprint |
| 2043 |
no test coverage detected