11/*
2- * Copyright 2019-2023 Diligent Graphics LLC
2+ * Copyright 2019-2025 Diligent Graphics LLC
33 * Copyright 2015-2019 Egor Yusov
44 *
55 * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,29 +98,35 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
9898 /// \param [in] Flags - Flags that specify which type of validation to perform.
9999 /// \return True if SBT content is valid, and false otherwise.
100100 ///
101+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
102+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
103+ ///
104+ /// This method is only implemented in development build and has no effect in release build.
105+ ///
101106 /// \note Access to the SBT must be externally synchronized.
102- /// The function does not modify the data used by IDeviceContext::TraceRays() and
103- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
104- /// This method is only implemented in development build and has no effect in release build.
105107 VIRTUAL Bool METHOD (Verify )(THIS_
106108 VERIFY_SBT_FLAGS Flags ) CONST PURE ;
107109
108110
109111 /// Resets the SBT with the new pipeline state. This is more efficient than creating a new SBT.
110112
113+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
114+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
115+ ///
111116 /// \note Access to the SBT must be externally synchronized.
112- /// The function does not modify the data used by IDeviceContext::TraceRays() and
113- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
114117 VIRTUAL void METHOD (Reset )(THIS_
115118 IPipelineState * pPSO ) PURE ;
116119
117120
121+ /// Resets hit groups in the SBT.
122+
118123 /// After TLAS or BLAS was rebuilt or updated, hit group shader bindings may have become invalid,
119124 /// you can reset hit groups only and keep ray-gen, miss and callable shader bindings intact.
120-
125+ ///
126+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
127+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
128+ ///
121129 /// \note Access to the SBT must be externally synchronized.
122- /// The function does not modify the data used by IDeviceContext::TraceRays() and
123- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
124130 VIRTUAL void METHOD (ResetHitGroups )(THIS ) PURE ;
125131
126132
@@ -131,9 +137,10 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
131137 /// \param [in] pData - Shader record data, can be null.
132138 /// \param [in] DataSize - Shader record data size, should be equal to RayTracingPipelineDesc::ShaderRecordSize.
133139 ///
140+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
141+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
142+ ///
134143 /// \note Access to the SBT must be externally synchronized.
135- /// The function does not modify the data used by IDeviceContext::TraceRays() and
136- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
137144 VIRTUAL void METHOD (BindRayGenShader )(THIS_
138145 const Char * pShaderGroupName ,
139146 const void * pData DEFAULT_INITIALIZER (nullptr ),
@@ -150,9 +157,10 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
150157 /// \param [in] pData - Shader record data, can be null.
151158 /// \param [in] DataSize - Shader record data size, should be equal to RayTracingPipelineDesc::ShaderRecordSize.
152159 ///
160+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
161+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
162+ ///
153163 /// \note Access to the SBT must be externally synchronized.
154- /// The function does not modify the data used by IDeviceContext::TraceRays() and
155- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
156164 VIRTUAL void METHOD (BindMissShader )(THIS_
157165 const Char * pShaderGroupName ,
158166 Uint32 MissIndex ,
@@ -178,11 +186,13 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
178186 /// \param [in] pData - Shader record data, can be null.
179187 /// \param [in] DataSize - Shader record data size, should be equal to RayTracingPipelineDesc::ShaderRecordSize.
180188 ///
181- /// \note Access to the SBT must be externally synchronized.
182- /// The function does not modify the data used by IDeviceContext::TraceRays() and
183- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
184- /// Access to the TLAS must be externally synchronized.
185- /// Access to the BLAS that was used in the TLAS instance with name pInstanceName must be externally synchronized.
189+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
190+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
191+ ///
192+ /// \note
193+ /// Access to the BLAS that was used in the TLAS instance with name pInstanceName must be externally synchronized.\n
194+ /// Access to the TLAS must be externally synchronized.\n
195+ /// Access to the SBT must be externally synchronized.
186196 VIRTUAL void METHOD (BindHitGroupForGeometry )(THIS_
187197 ITopLevelAS * pTLAS ,
188198 const Char * pInstanceName ,
@@ -202,12 +212,13 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
202212 /// \param [in] pData - Shader record data, can be null.
203213 /// \param [in] DataSize - Shader record data size, should equal to RayTracingPipelineDesc::ShaderRecordSize.
204214 ///
205- /// \note Access to the SBT must be externally synchronized.
206- /// The function does not modify the data used by IDeviceContext::TraceRays() and
207- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
215+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
216+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
208217 ///
209218 /// \remarks Use IBottomLevelAS::GetGeometryIndex(), ITopLevelAS::GetBuildInfo(),
210219 /// ITopLevelAS::GetInstanceDesc().ContributionToHitGroupIndex to calculate the binding index.
220+ ///
221+ /// \note Access to the SBT must be externally synchronized.
211222 VIRTUAL void METHOD (BindHitGroupByIndex )(THIS_
212223 Uint32 BindingIndex ,
213224 const Char * pShaderGroupName ,
@@ -230,9 +241,10 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
230241 /// \param [in] pData - Shader record data, can be null.
231242 /// \param [in] DataSize - Shader record data size, should be equal to RayTracingPipelineDesc::ShaderRecordSize.
232243 ///
244+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
245+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
246+ ///
233247 /// \note Access to the SBT and TLAS must be externally synchronized.
234- /// The function does not modify the data used by IDeviceContext::TraceRays() and
235- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
236248 VIRTUAL void METHOD (BindHitGroupForInstance )(THIS_
237249 ITopLevelAS * pTLAS ,
238250 const Char * pInstanceName ,
@@ -255,9 +267,10 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
255267 /// \param [in] pData - Shader record data, can be null.
256268 /// \param [in] DataSize - Shader record data size, should be equal to RayTracingPipelineDesc::ShaderRecordSize.
257269 ///
258- /// \note Access to the SBT and TLAS must be externally synchronized.
259- /// The function does not modify the data used by IDeviceContext::TraceRays() and
260- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
270+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
271+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
272+ ///
273+ /// \note Access to the SBT and TLAS must be externally synchronized.
261274 VIRTUAL void METHOD (BindHitGroupForTLAS )(THIS_
262275 ITopLevelAS * pTLAS ,
263276 Uint32 RayOffsetInHitGroupIndex ,
@@ -276,9 +289,10 @@ DILIGENT_BEGIN_INTERFACE(IShaderBindingTable, IDeviceObject)
276289 /// \param [in] pData - Shader record data, can be null.
277290 /// \param [in] DataSize - Shader record data size, should be equal to RayTracingPipelineDesc::ShaderRecordSize.
278291 ///
292+ /// The function does not modify the data used by IDeviceContext::TraceRays() and
293+ /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
294+ ///
279295 /// \note Access to the SBT must be externally synchronized.
280- /// The function does not modify the data used by IDeviceContext::TraceRays() and
281- /// IDeviceContext::TraceRaysIndirect() commands, so they can run in parallel.
282296 VIRTUAL void METHOD (BindCallableShader )(THIS_
283297 const Char * pShaderGroupName ,
284298 Uint32 CallableIndex ,
0 commit comments