From 66288b539cf0c396e1ebbcbdda7beab46d51bab2 Mon Sep 17 00:00:00 2001 From: dpjudas Date: Sat, 31 Aug 2024 03:42:03 +0200 Subject: [PATCH] Fix crash on GPUs that doesn't support ray query --- src/common/rendering/vulkan/vk_levelmesh.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/common/rendering/vulkan/vk_levelmesh.cpp b/src/common/rendering/vulkan/vk_levelmesh.cpp index b6579ab11..fd3dc6d2e 100644 --- a/src/common/rendering/vulkan/vk_levelmesh.cpp +++ b/src/common/rendering/vulkan/vk_levelmesh.cpp @@ -124,16 +124,20 @@ void VkLevelMesh::CreateVulkanObjects() void VkLevelMesh::BeginFrame() { - InstanceCount = (Mesh->Mesh.IndexCount + IndexesPerBLAS - 1) / IndexesPerBLAS; - - bool accelStructNeedsUpdate = Mesh->UploadRanges.Index.Size() != 0; - for (const MeshBufferRange& range : Mesh->UploadRanges.Index) + bool accelStructNeedsUpdate = false; + if (useRayQuery) { - int start = range.Start / IndexesPerBLAS; - int end = (range.End + IndexesPerBLAS - 1) / IndexesPerBLAS; - for (int i = start; i < end; i++) + InstanceCount = (Mesh->Mesh.IndexCount + IndexesPerBLAS - 1) / IndexesPerBLAS; + + accelStructNeedsUpdate = Mesh->UploadRanges.Index.Size() != 0; + for (const MeshBufferRange& range : Mesh->UploadRanges.Index) { - DynamicBLAS[i].NeedsUpdate = true; + int start = range.Start / IndexesPerBLAS; + int end = (range.End + IndexesPerBLAS - 1) / IndexesPerBLAS; + for (int i = start; i < end; i++) + { + DynamicBLAS[i].NeedsUpdate = true; + } } }