Skip to content

Commit 88b3275

Browse files
author
kevyuu
committed
Fix create shader binding table to use the new span api
1 parent f96dfcc commit 88b3275

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

71_RayTracingPipeline/main.cpp

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
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

Comments
 (0)