33// For conditions of distribution and use, see copyright notice in nabla.h
44
55#include " common.hpp"
6+ #include " nbl/builtin/builtinResources.h"
67#include " nbl/ext/FullScreenTriangle/FullScreenTriangle.h"
78#include " nbl/builtin/hlsl/indirect_commands.hlsl"
89
@@ -377,12 +378,12 @@ class RaytracingPipelineApp final : public examples::SimpleWindowedApplication,
377378 hitGroups[getHitGroupIndex (EGT_PROCEDURAL, ERT_PRIMARY)] = {
378379 .closestHit = RTDS_SPHERE_CLOSEST_HIT,
379380 .anyHit = RTDS_ANYHIT_PRIMARY,
380- .intersectionShader = RTDS_INTERSECTION,
381+ .intersection = RTDS_INTERSECTION,
381382 };
382383 hitGroups[getHitGroupIndex (EGT_PROCEDURAL, ERT_OCCLUSION)] = {
383384 .closestHit = RTDS_CLOSEST_HIT_SHADOW,
384385 .anyHit = RTDS_ANYHIT_SHADOW,
385- .intersectionShader = RTDS_INTERSECTION,
386+ .intersection = RTDS_INTERSECTION,
386387 };
387388 shaderGroups.hits = hitGroups;
388389
@@ -1335,9 +1336,15 @@ class RaytracingPipelineApp final : public examples::SimpleWindowedApplication,
13351336 const auto handleSizeAligned = nbl::core::alignUp (handleSize, limits.shaderGroupHandleAlignment );
13361337
13371338 auto & raygenRange = m_shaderBindingTable.raygenGroupRange ;
1339+
13381340 auto & hitRange = m_shaderBindingTable.hitGroupsRange ;
1341+ const auto hitHandles = pipeline->getHitHandles ();
1342+
13391343 auto & missRange = m_shaderBindingTable.missGroupsRange ;
1344+ const auto missHandles = pipeline->getMissHandles ();
1345+
13401346 auto & callableRange = m_shaderBindingTable.callableGroupsRange ;
1347+ const auto callableHandles = pipeline->getCallableHandles ();
13411348
13421349 raygenRange = {
13431350 .offset = 0 ,
@@ -1346,19 +1353,19 @@ class RaytracingPipelineApp final : public examples::SimpleWindowedApplication,
13461353
13471354 missRange = {
13481355 .offset = raygenRange.size ,
1349- .size = core::alignUp (pipeline-> getMissGroupCount () * handleSizeAligned, limits.shaderGroupBaseAlignment ),
1356+ .size = core::alignUp (missHandles. size () * handleSizeAligned, limits.shaderGroupBaseAlignment ),
13501357 };
13511358 m_shaderBindingTable.missGroupsStride = handleSizeAligned;
13521359
13531360 hitRange = {
13541361 .offset = missRange.offset + missRange.size ,
1355- .size = core::alignUp (pipeline-> getHitGroupCount () * handleSizeAligned, limits.shaderGroupBaseAlignment ),
1362+ .size = core::alignUp (hitHandles. size () * handleSizeAligned, limits.shaderGroupBaseAlignment ),
13561363 };
13571364 m_shaderBindingTable.hitGroupsStride = handleSizeAligned;
13581365
13591366 callableRange = {
13601367 .offset = hitRange.offset + hitRange.size ,
1361- .size = core::alignUp (pipeline-> getCallableGroupCount () * handleSizeAligned, limits.shaderGroupBaseAlignment ),
1368+ .size = core::alignUp (callableHandles. size () * handleSizeAligned, limits.shaderGroupBaseAlignment ),
13621369 };
13631370 m_shaderBindingTable.callableGroupsStride = handleSizeAligned;
13641371
@@ -1374,25 +1381,25 @@ class RaytracingPipelineApp final : public examples::SimpleWindowedApplication,
13741381
13751382 // copy miss region
13761383 uint8_t * pMissData = pData + missRange.offset ;
1377- for (int32_t missIx = 0 ; missIx < pipeline-> getMissGroupCount (); missIx++ )
1384+ for (const auto & handle : missHandles )
13781385 {
1379- memcpy (pMissData, &pipeline-> getMiss (missIx) , handleSize);
1386+ memcpy (pMissData, &handle , handleSize);
13801387 pMissData += m_shaderBindingTable.missGroupsStride ;
13811388 }
13821389
13831390 // copy hit region
13841391 uint8_t * pHitData = pData + hitRange.offset ;
1385- for (int32_t hitIx = 0 ; hitIx < pipeline-> getHitGroupCount (); hitIx++ )
1392+ for (const auto & handle : hitHandles )
13861393 {
1387- memcpy (pHitData, &pipeline-> getHit (hitIx) , handleSize);
1394+ memcpy (pHitData, &handle , handleSize);
13881395 pHitData += m_shaderBindingTable.hitGroupsStride ;
13891396 }
13901397
13911398 // copy callable region
13921399 uint8_t * pCallableData = pData + callableRange.offset ;
1393- for (int32_t callableIx = 0 ; callableIx < pipeline-> getCallableGroupCount (); callableIx++ )
1400+ for (const auto & handle : callableHandles )
13941401 {
1395- memcpy (pCallableData, &pipeline-> getCallable (callableIx) , handleSize);
1402+ memcpy (pCallableData, &handle , handleSize);
13961403 pCallableData += m_shaderBindingTable.callableGroupsStride ;
13971404 }
13981405
0 commit comments