|
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