SpiecsEngine
 
Loading...
Searching...
No Matches

◆ OnMeshAddedWorld()

void Spices::RayTracingRenderer::OnMeshAddedWorld ( )
overrideprivatevirtual

@breif This interface is called on world mark query tick (registry by MeshComponent).

Create BLAS/TLAS.

Create Pipeline/SBT.

Submit new raytracing instance.

Create BLAS/TLAS.

Create Pipeline/SBT.

Submit new raytracing instance.

Reimplemented from Spices::Renderer.

Definition at line 63 of file RayTracingRenderer.cpp.

64 {
66
67 auto view = GetEntityWithComponent<MeshComponent>(FrameInfo::Get().m_World.get());
68
70
71 SPICES_PROFILE_ZONEN("RayTracingRenderer::OnMeshAddedWorld");
72
73 std::shared_ptr<VulkanRayTracing> rayTracingInstance = std::make_shared<VulkanRayTracing>(m_VulkanState);
74
78 CreateBottomLevelAS(FrameInfo::Get(), view, rayTracingInstance);
79 CreateTopLevelAS (FrameInfo::Get(), view, rayTracingInstance);
80
85 CreateRTShaderBindingTable(rayTracingInstance);
86
91
92 vkQueueWaitIdle(m_VulkanState.m_GraphicQueue);
93 m_RenderCache->PushToCaches(m_VulkanRayTracing);
94 m_VulkanRayTracing = rayTracingInstance;
95
96 });
97 });
98 }
#define SPICES_PROFILE_ZONEN(...)
static FrameInfo & Get()
Get FrameInfo.
Definition FrameInfo.cpp:14
static std::shared_ptr< VulkanRayTracing > m_VulkanRayTracing
In Used VulkanRayTracing.
void CreateTopLevelAS(FrameInfo &frameInfo, std::shared_ptr< std::vector< uint32_t > > view, std::shared_ptr< VulkanRayTracing > rayTracingInstance, bool update=false)
Create TopLevelAS.
void CreateRTShaderBindingTable(std::shared_ptr< VulkanRayTracing > rayTracingInstance)
Create Shader Binding Table.
void CreateBottomLevelAS(FrameInfo &frameInfo, std::shared_ptr< std::vector< uint32_t > > view, std::shared_ptr< VulkanRayTracing > rayTracingInstance)
Create BottomLevelAS with all MeshComponents.
virtual void OnMeshAddedWorld()
Definition Renderer.cpp:86
void CreateDefaultMaterial()
Create Specific Renderer Default Material.
Definition Renderer.cpp:233
std::shared_ptr< RendererCache > m_RenderCache
RendererCache.
Definition Renderer.h:2047
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
void AsyncMainTask(ThreadPoolEnum pool, Func &&func, Args &&...args)
static auto AsyncTask(ThreadPoolEnum pool, F &&func, Args &&... args) -> std::future< decltype(func(std::forward< Args >(args)...))>

References Spices::FrameInfo::Get(), and Spices::Renderer::OnMeshAddedWorld().