Skip to content

Commit 0749310

Browse files
RayTracingReference: code cleanup
1 parent 17e73e8 commit 0749310

File tree

1 file changed

+37
-41
lines changed

1 file changed

+37
-41
lines changed

Tests/DiligentCoreAPITest/src/Vulkan/RayTracingReferenceVk.cpp

Lines changed: 37 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -786,10 +786,10 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
786786
{
787787
const auto& Vertices = TestingConstants::TriangleClosestHit::Vertices;
788788

789-
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
790-
VkAccelerationStructureGeometryKHR Geometry = {};
791-
VkAccelerationStructureBuildRangeInfoKHR Offset = {1, 0, 0, 0};
792-
VkAccelerationStructureBuildRangeInfoKHR const* OffsetPtr = &Offset;
789+
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
790+
VkAccelerationStructureGeometryKHR Geometry = {};
791+
VkAccelerationStructureBuildRangeInfoKHR BuildRange = {1, 0, 0, 0};
792+
VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {&BuildRange};
793793

794794
Geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
795795
Geometry.flags = VK_GEOMETRY_OPAQUE_BIT_KHR;
@@ -800,7 +800,7 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
800800
Geometry.geometry.triangles.vertexStride = sizeof(Vertices[0]);
801801
Geometry.geometry.triangles.indexType = VK_INDEX_TYPE_NONE_KHR;
802802

803-
CreateBLAS(Ctx, &Geometry, OffsetPtr, 1, Ctx.BLAS);
803+
CreateBLAS(Ctx, &Geometry, &BuildRange, 1, Ctx.BLAS);
804804
CreateTLAS(Ctx, 1, Ctx.TLAS);
805805
CreateRTBuffers(Ctx, sizeof(Vertices), 0, 1, 1, 1);
806806

@@ -818,7 +818,7 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
818818
ASBuildInfo.pGeometries = &Geometry;
819819
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
820820

821-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
821+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
822822

823823
VkAccelerationStructureInstanceKHR InstanceData = {};
824824
InstanceData.instanceShaderBindingTableRecordOffset = 0;
@@ -847,7 +847,7 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
847847
ASBuildInfo.pGeometries = &Geometry;
848848
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
849849

850-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
850+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
851851
}
852852

853853
Ctx.ClearRenderTarget(pTestingSwapChainVk);
@@ -943,10 +943,10 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
943943
{
944944
const auto& Vertices = TestingConstants::TriangleAnyHit::Vertices;
945945

946-
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
947-
VkAccelerationStructureBuildRangeInfoKHR Offset = {3, 0, 0, 0};
948-
VkAccelerationStructureGeometryKHR Geometry = {};
949-
VkAccelerationStructureBuildRangeInfoKHR const* OffsetPtr = &Offset;
946+
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
947+
VkAccelerationStructureBuildRangeInfoKHR BuildRange = {3, 0, 0, 0};
948+
VkAccelerationStructureGeometryKHR Geometry = {};
949+
VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {&BuildRange};
950950

951951
Geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
952952
Geometry.flags = 0;
@@ -957,7 +957,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
957957
Geometry.geometry.triangles.maxVertex = _countof(Vertices) - 1;
958958
Geometry.geometry.triangles.indexType = VK_INDEX_TYPE_NONE_KHR;
959959

960-
CreateBLAS(Ctx, &Geometry, OffsetPtr, 1, Ctx.BLAS);
960+
CreateBLAS(Ctx, &Geometry, &BuildRange, 1, Ctx.BLAS);
961961
CreateTLAS(Ctx, 1, Ctx.TLAS);
962962
CreateRTBuffers(Ctx, sizeof(Vertices), 0, 1, 1, 1);
963963

@@ -975,7 +975,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
975975
ASBuildInfo.pGeometries = &Geometry;
976976
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
977977

978-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
978+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
979979

980980
VkAccelerationStructureInstanceKHR InstanceData = {};
981981
InstanceData.instanceShaderBindingTableRecordOffset = 0;
@@ -995,7 +995,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
995995
Geometry.geometry.instances.arrayOfPointers = VK_FALSE;
996996
Geometry.geometry.instances.data.deviceAddress = Ctx.vkInstanceBufferAddress;
997997

998-
Offset.primitiveCount = 1;
998+
BuildRange.primitiveCount = 1;
999999

10001000
ASBuildInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
10011001
ASBuildInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR;
@@ -1006,7 +1006,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
10061006
ASBuildInfo.pGeometries = &Geometry;
10071007
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
10081008

1009-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
1009+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
10101010
}
10111011

10121012
Ctx.ClearRenderTarget(pTestingSwapChainVk);
@@ -1102,10 +1102,10 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11021102
{
11031103
const auto& Boxes = TestingConstants::ProceduralIntersection::Boxes;
11041104

1105-
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1106-
VkAccelerationStructureBuildRangeInfoKHR Offset = {1, 0, 0, 0};
1107-
VkAccelerationStructureGeometryKHR Geometry = {};
1108-
VkAccelerationStructureBuildRangeInfoKHR const* OffsetPtr = &Offset;
1105+
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1106+
VkAccelerationStructureBuildRangeInfoKHR BuildRange = {1, 0, 0, 0};
1107+
VkAccelerationStructureGeometryKHR Geometry = {};
1108+
VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {&BuildRange};
11091109

11101110
Geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
11111111
Geometry.flags = VK_GEOMETRY_OPAQUE_BIT_KHR;
@@ -1114,7 +1114,7 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11141114
Geometry.geometry.aabbs.pNext = nullptr;
11151115
Geometry.geometry.aabbs.stride = sizeof(float3) * 2;
11161116

1117-
CreateBLAS(Ctx, &Geometry, OffsetPtr, 1, Ctx.BLAS);
1117+
CreateBLAS(Ctx, &Geometry, &BuildRange, 1, Ctx.BLAS);
11181118
CreateTLAS(Ctx, 1, Ctx.TLAS);
11191119
CreateRTBuffers(Ctx, sizeof(Boxes), 0, 1, 1, 1);
11201120

@@ -1132,7 +1132,7 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11321132
ASBuildInfo.pGeometries = &Geometry;
11331133
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
11341134

1135-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
1135+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
11361136

11371137
VkAccelerationStructureInstanceKHR InstanceData = {};
11381138
InstanceData.instanceShaderBindingTableRecordOffset = 0;
@@ -1161,7 +1161,7 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11611161
ASBuildInfo.pGeometries = &Geometry;
11621162
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
11631163

1164-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
1164+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
11651165
}
11661166

11671167
Ctx.ClearRenderTarget(pTestingSwapChainVk);
@@ -1271,11 +1271,11 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
12711271
const auto& Vertices = TestingConstants::MultiGeometry::Vertices;
12721272
const auto& Indices = TestingConstants::MultiGeometry::Indices;
12731273

1274-
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1275-
VkAccelerationStructureBuildRangeInfoKHR Offsets[3] = {};
1276-
VkAccelerationStructureGeometryKHR Geometries[3] = {};
1277-
VkAccelerationStructureBuildRangeInfoKHR const* OffsetPtr = Offsets;
1278-
static_assert(_countof(Offsets) == _countof(Geometries), "size mismatch");
1274+
VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1275+
VkAccelerationStructureBuildRangeInfoKHR BuildRanges[3] = {};
1276+
VkAccelerationStructureGeometryKHR Geometries[3] = {};
1277+
VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {BuildRanges};
1278+
static_assert(_countof(BuildRanges) == _countof(Geometries), "size mismatch");
12791279
static_assert(GeometryCount == _countof(Geometries), "size mismatch");
12801280

12811281
Geometries[0].sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
@@ -1305,11 +1305,11 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13051305
Geometries[2].geometry.triangles.maxVertex = (_countof(Primitives) - PrimitiveOffsets[2]) * 3 - 1;
13061306
Geometries[2].geometry.triangles.indexType = VK_INDEX_TYPE_UINT32;
13071307

1308-
Offsets[0].primitiveCount = PrimitiveOffsets[1];
1309-
Offsets[1].primitiveCount = PrimitiveOffsets[2] - PrimitiveOffsets[1];
1310-
Offsets[2].primitiveCount = _countof(Primitives) - PrimitiveOffsets[2];
1308+
BuildRanges[0].primitiveCount = PrimitiveOffsets[1];
1309+
BuildRanges[1].primitiveCount = PrimitiveOffsets[2] - PrimitiveOffsets[1];
1310+
BuildRanges[2].primitiveCount = _countof(Primitives) - PrimitiveOffsets[2];
13111311

1312-
CreateBLAS(Ctx, Geometries, OffsetPtr, _countof(Geometries), Ctx.BLAS);
1312+
CreateBLAS(Ctx, Geometries, BuildRanges, _countof(Geometries), Ctx.BLAS);
13131313
CreateTLAS(Ctx, InstanceCount, Ctx.TLAS);
13141314
CreateRTBuffers(Ctx, sizeof(Vertices), sizeof(Indices), InstanceCount, 1, HitGroupCount, TestingConstants::MultiGeometry::ShaderRecordSize);
13151315

@@ -1324,10 +1324,6 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13241324
Geometries[2].geometry.triangles.vertexData.deviceAddress = Ctx.vkVertexBufferAddress;
13251325
Geometries[2].geometry.triangles.indexData.deviceAddress = Ctx.vkIndexBufferAddress + PrimitiveOffsets[2] * sizeof(uint) * 3;
13261326

1327-
Offsets[0].primitiveCount = PrimitiveOffsets[1];
1328-
Offsets[1].primitiveCount = PrimitiveOffsets[2] - PrimitiveOffsets[1];
1329-
Offsets[2].primitiveCount = _countof(Primitives) - PrimitiveOffsets[2];
1330-
13311327
ASBuildInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
13321328
ASBuildInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR;
13331329
ASBuildInfo.mode = VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR;
@@ -1337,7 +1333,7 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13371333
ASBuildInfo.pGeometries = Geometries;
13381334
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
13391335

1340-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
1336+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
13411337

13421338
VkAccelerationStructureInstanceKHR InstanceData[2] = {};
13431339
static_assert(_countof(InstanceData) == InstanceCount, "size mismatch");
@@ -1362,11 +1358,11 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13621358
vkCmdUpdateBuffer(Ctx.vkCmdBuffer, Ctx.vkInstanceBuffer, 0, sizeof(InstanceData), InstanceData);
13631359
AccelStructBarrier(Ctx);
13641360

1365-
VkAccelerationStructureBuildRangeInfoKHR InstOffsets = {};
1366-
VkAccelerationStructureGeometryKHR Instances = {};
1361+
VkAccelerationStructureBuildRangeInfoKHR InstBuildRange = {};
1362+
VkAccelerationStructureGeometryKHR Instances = {};
13671363

1368-
OffsetPtr = &InstOffsets;
1369-
InstOffsets.primitiveCount = _countof(InstanceData);
1364+
RangeInfos[0] = &InstBuildRange;
1365+
InstBuildRange.primitiveCount = _countof(InstanceData);
13701366

13711367
Instances.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
13721368
Instances.geometryType = VK_GEOMETRY_TYPE_INSTANCES_KHR;
@@ -1383,7 +1379,7 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13831379
ASBuildInfo.pGeometries = &Instances;
13841380
ASBuildInfo.scratchData.deviceAddress = Ctx.vkScratchBufferAddress;
13851381

1386-
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, 1, &ASBuildInfo, &OffsetPtr);
1382+
vkCmdBuildAccelerationStructuresKHR(Ctx.vkCmdBuffer, _countof(RangeInfos), &ASBuildInfo, RangeInfos);
13871383
}
13881384

13891385
ClearRenderTarget(Ctx, pTestingSwapChainVk);

0 commit comments

Comments
 (0)