|
5 | 5 | #include "nbl/video/IGPURayTracingPipeline.h"
|
6 | 6 |
|
7 | 7 | #include <algorithm>
|
| 8 | +#include <span> |
8 | 9 |
|
9 | 10 | namespace nbl::video
|
10 | 11 | {
|
@@ -84,22 +85,22 @@ namespace nbl::video
|
84 | 85 | return m_shaderGroupHandles->operator[](getRaygenIndex());
|
85 | 86 | }
|
86 | 87 |
|
87 |
| - const IGPURayTracingPipeline::SShaderGroupHandle& CVulkanRayTracingPipeline::getMiss(uint32_t index) const |
| 88 | + std::span<const IGPURayTracingPipeline::SShaderGroupHandle> CVulkanRayTracingPipeline::getMissHandles() const |
88 | 89 | {
|
89 | 90 | const auto baseIndex = getMissBaseIndex();
|
90 |
| - return m_shaderGroupHandles->operator[](baseIndex + index); |
| 91 | + return std::span(m_shaderGroupHandles->begin() + baseIndex, m_missShaderGroups->size()); |
91 | 92 | }
|
92 | 93 |
|
93 |
| - const IGPURayTracingPipeline::SShaderGroupHandle& CVulkanRayTracingPipeline::getHit(uint32_t index) const |
| 94 | + std::span<const IGPURayTracingPipeline::SShaderGroupHandle> CVulkanRayTracingPipeline::getHitHandles() const |
94 | 95 | {
|
95 | 96 | const auto baseIndex = getHitBaseIndex();
|
96 |
| - return m_shaderGroupHandles->operator[](baseIndex + index); |
| 97 | + return std::span(m_shaderGroupHandles->begin() + baseIndex, m_hitShaderGroups->size()); |
97 | 98 | }
|
98 | 99 |
|
99 |
| - const IGPURayTracingPipeline::SShaderGroupHandle& CVulkanRayTracingPipeline::getCallable(uint32_t index) const |
| 100 | + std::span<const IGPURayTracingPipeline::SShaderGroupHandle> CVulkanRayTracingPipeline::getCallableHandles() const |
100 | 101 | {
|
101 | 102 | const auto baseIndex = getCallableBaseIndex();
|
102 |
| - return m_shaderGroupHandles->operator[](baseIndex + index); |
| 103 | + return std::span(m_shaderGroupHandles->begin() + baseIndex, m_callableShaderGroups->size()); |
103 | 104 | }
|
104 | 105 |
|
105 | 106 | uint16_t CVulkanRayTracingPipeline::getRaygenStackSize() const
|
@@ -152,13 +153,13 @@ namespace nbl::video
|
152 | 153 | uint32_t CVulkanRayTracingPipeline::getHitBaseIndex() const
|
153 | 154 | {
|
154 | 155 | // one raygen group + miss groups before this groups
|
155 |
| - return 1 + getMissGroupCount(); |
| 156 | + return 1 + m_missShaderGroups->size(); |
156 | 157 | }
|
157 | 158 |
|
158 | 159 | uint32_t CVulkanRayTracingPipeline::getCallableBaseIndex() const
|
159 | 160 | {
|
160 | 161 | // one raygen group + miss groups + hit groups before this groups
|
161 |
| - return 1 + getMissGroupCount() + getHitGroupCount(); |
| 162 | + return 1 + m_missShaderGroups->size() + m_hitShaderGroups->size(); |
162 | 163 | }
|
163 | 164 |
|
164 | 165 | }
|
0 commit comments