44* Uses the data section of each shader binding table record to color the background and geometry
55*
66* Example by Nate Morrical (https://github.com/natevm)
7- *
7+ *
88* Copyright (C) 2019-2025 by Sascha Willems - www.saschawillems.de
99*
1010* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
@@ -135,7 +135,7 @@ class VulkanExample : public VulkanExampleBase
135135 }
136136 }
137137
138- /*
138+ /*
139139 Create a scratch buffer to hold temporary data for a ray tracing acceleration structure
140140 */
141141 RayTracingScratchBuffer createScratchBuffer (VkDeviceSize size)
@@ -171,7 +171,7 @@ class VulkanExample : public VulkanExampleBase
171171 return scratchBuffer;
172172 }
173173
174- void deleteScratchBuffer (RayTracingScratchBuffer& scratchBuffer)
174+ void deleteScratchBuffer (RayTracingScratchBuffer& scratchBuffer)
175175 {
176176 if (scratchBuffer.memory != VK_NULL_HANDLE ) {
177177 vkFreeMemory (device, scratchBuffer.memory , nullptr );
@@ -322,7 +322,7 @@ class VulkanExample : public VulkanExampleBase
322322 VkDeviceOrHostAddressConstKHR vertexBufferDeviceAddress{};
323323 VkDeviceOrHostAddressConstKHR indexBufferDeviceAddress{};
324324 VkDeviceOrHostAddressConstKHR transformBufferDeviceAddress{};
325-
325+
326326 vertexBufferDeviceAddress.deviceAddress = getBufferDeviceAddress (vertexBuffer.buffer );
327327 indexBufferDeviceAddress.deviceAddress = getBufferDeviceAddress (indexBuffer.buffer );
328328 transformBufferDeviceAddress.deviceAddress = getBufferDeviceAddress (transformBuffer.buffer );
@@ -342,15 +342,15 @@ class VulkanExample : public VulkanExampleBase
342342 accelerationStructureGeometry.geometry .triangles .transformData .deviceAddress = 0 ;
343343 accelerationStructureGeometry.geometry .triangles .transformData .hostAddress = nullptr ;
344344 accelerationStructureGeometry.geometry .triangles .transformData = transformBufferDeviceAddress;
345-
345+
346346 // Get size info
347347 VkAccelerationStructureBuildGeometryInfoKHR accelerationStructureBuildGeometryInfo{};
348348 accelerationStructureBuildGeometryInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR ;
349349 accelerationStructureBuildGeometryInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR ;
350350 accelerationStructureBuildGeometryInfo.flags = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR ;
351351 accelerationStructureBuildGeometryInfo.geometryCount = 1 ;
352352 accelerationStructureBuildGeometryInfo.pGeometries = &accelerationStructureGeometry;
353-
353+
354354 const uint32_t numTriangles = 1 ;
355355 VkAccelerationStructureBuildSizesInfoKHR accelerationStructureBuildSizesInfo{};
356356 accelerationStructureBuildSizesInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR ;
@@ -462,7 +462,7 @@ class VulkanExample : public VulkanExampleBase
462462 VkAccelerationStructureBuildSizesInfoKHR accelerationStructureBuildSizesInfo{};
463463 accelerationStructureBuildSizesInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR ;
464464 vkGetAccelerationStructureBuildSizesKHR (
465- device,
465+ device,
466466 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR ,
467467 &accelerationStructureBuildGeometryInfo,
468468 &primitive_count,
@@ -549,9 +549,9 @@ class VulkanExample : public VulkanExampleBase
549549 const VkBufferUsageFlags bufferUsageFlags = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT ;
550550 const VkMemoryPropertyFlags memoryUsageFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT ;
551551
552- // We allocate space for the handle (which is like lambda function pointers to call in the ray tracing pipeline)
552+ // We allocate space for the handle (which is like lambda function pointers to call in the ray tracing pipeline)
553553 // as well as the data to pass to those functions (which act as the variables being "captured" by those lambda functions)
554- uint32_t bufferSize = vks::tools::alignedSize (handleSize + 3 * sizeof (float ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
554+ uint32_t bufferSize = vks::tools::alignedSize (handleSize + ( uint32_t )( 3 * sizeof (float ) ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
555555 VK_CHECK_RESULT (vulkanDevice->createBuffer (bufferUsageFlags, memoryUsageFlags, &raygenShaderBindingTable, bufferSize));
556556 VK_CHECK_RESULT (vulkanDevice->createBuffer (bufferUsageFlags, memoryUsageFlags, &missShaderBindingTable, bufferSize));
557557 VK_CHECK_RESULT (vulkanDevice->createBuffer (bufferUsageFlags, memoryUsageFlags, &hitShaderBindingTable, bufferSize));
@@ -763,7 +763,7 @@ class VulkanExample : public VulkanExampleBase
763763
764764 void getEnabledFeatures ()
765765 {
766- // Enable features required for ray tracing using feature chaining via pNext
766+ // Enable features required for ray tracing using feature chaining via pNext
767767 enabledBufferDeviceAddresFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES ;
768768 enabledBufferDeviceAddresFeatures.bufferDeviceAddress = VK_TRUE ;
769769
@@ -828,7 +828,7 @@ class VulkanExample : public VulkanExampleBase
828828 }
829829
830830 VkCommandBuffer cmdBuffer = drawCmdBuffers[currentBuffer];
831-
831+
832832 VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo ();
833833
834834 VkImageSubresourceRange subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT , 0 , 1 , 0 , 1 };
@@ -845,17 +845,17 @@ class VulkanExample : public VulkanExampleBase
845845 // that we use to store our color data
846846 VkStridedDeviceAddressRegionKHR raygenShaderSbtEntry{};
847847 raygenShaderSbtEntry.deviceAddress = getBufferDeviceAddress (raygenShaderBindingTable.buffer );
848- raygenShaderSbtEntry.size = vks::tools::alignedSize (handleSizeAligned + 3 * sizeof (float ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
848+ raygenShaderSbtEntry.size = vks::tools::alignedSize (handleSizeAligned + ( uint32_t )( 3 * sizeof (float ) ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
849849 raygenShaderSbtEntry.stride = raygenShaderSbtEntry.size ;
850850
851851 VkStridedDeviceAddressRegionKHR missShaderSbtEntry{};
852852 missShaderSbtEntry.deviceAddress = getBufferDeviceAddress (missShaderBindingTable.buffer );
853- missShaderSbtEntry.size = vks::tools::alignedSize (handleSizeAligned + 3 * sizeof (float ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
853+ missShaderSbtEntry.size = vks::tools::alignedSize (handleSizeAligned + ( uint32_t )( 3 * sizeof (float ) ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
854854 missShaderSbtEntry.stride = missShaderSbtEntry.size ;
855855
856856 VkStridedDeviceAddressRegionKHR hitShaderSbtEntry{};
857857 hitShaderSbtEntry.deviceAddress = getBufferDeviceAddress (hitShaderBindingTable.buffer );
858- hitShaderSbtEntry.size = vks::tools::alignedSize (handleSizeAligned + 3 * sizeof (float ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
858+ hitShaderSbtEntry.size = vks::tools::alignedSize (handleSizeAligned + ( uint32_t )( 3 * sizeof (float ) ), rayTracingPipelineProperties.shaderGroupBaseAlignment );
859859 hitShaderSbtEntry.stride = hitShaderSbtEntry.size ;
860860
861861 VkStridedDeviceAddressRegionKHR callableShaderSbtEntry{};
0 commit comments