SpiecsEngine
 
Loading...
Searching...
No Matches

◆ TraceRaysAsync()

void Spices::Renderer::RayTracingRenderBehaveBuilder::TraceRaysAsync ( const VkStridedDeviceAddressRegionKHR * rgenRegion,
const VkStridedDeviceAddressRegionKHR * missRegion,
const VkStridedDeviceAddressRegionKHR * hitRegion,
const VkStridedDeviceAddressRegionKHR * callRegion ) const

Call vkCmdTraceRaysKHR here Async.

Parameters
[in]rgenRegionRayGen Shader Group.
[in]missRegionMiss Shader Group.
[in]hitRegionHit Shader Group.
[in]callRegionCallable Shader Group.

Definition at line 1250 of file Renderer.cpp.

1256 {
1258
1259 const uint32_t width = static_cast<uint32_t>(SlateSystem::GetRegister()->GetViewPort()->GetPanelSize().x);
1260 const uint32_t height = static_cast<uint32_t>(SlateSystem::GetRegister()->GetViewPort()->GetPanelSize().y);
1261
1262 /*
1263 * @attention Vulkan not allow dynamic state in mixing raytracing pipeline and custom graphic pipeline.
1264 * @see https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/8038.
1265 */
1266 m_Renderer->SubmitCmdsParallel(m_CommandBuffer, m_SubPassIndex, [&](const VkCommandBuffer& cmdBuffer) {
1267 m_Renderer->m_VulkanState.m_VkFunc.vkCmdTraceRaysKHR(
1268 cmdBuffer,
1269 rgenRegion,
1270 missRegion,
1271 hitRegion,
1272 callRegion,
1273 width,
1274 height,
1275 1
1276 );
1277 });
1278 }
#define SPICES_PROFILE_ZONE
uint32_t m_SubPassIndex
Current subPass Index.
Definition Renderer.h:1534
Renderer * m_Renderer
Specific Renderer pointer. Passed while this class instanced.
Definition Renderer.h:1515
VkCommandBuffer m_CommandBuffer
Current CommandBuffer.
Definition Renderer.h:1539
std::future< VkCommandBuffer > SubmitCmdsParallel(VkCommandBuffer primaryCmdBuffer, uint32_t subPass, F &&func)
Submit a group of commands to secondary command buffer, and execute all of them.
Definition Renderer.h:2273
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
static std::shared_ptr< SlateRegister > GetRegister()
Get slate register.
Definition SlateSystem.h:67
VulkanFunctions m_VkFunc
Definition VulkanUtils.h:98