SpiecsEngine
 
Loading...
Searching...
No Matches

◆ CreateBottomLevelAS()

void Spices::RayTracingRenderer::CreateBottomLevelAS ( FrameInfo & frameInfo,
std::shared_ptr< std::vector< uint32_t > > view,
std::shared_ptr< VulkanRayTracing > rayTracingInstance )
private

Create BottomLevelAS with all MeshComponents.

Parameters
[in]frameInfoFrameInfo.
[in]viewComponent View.
[in]rayTracingInstanceVulkanRayTracingInstance.

BLAS - Storing each primitive in a geometry.

Iter all MeshComponents.

Skip if no blas build requirment.

Build BLAS.

BLAS - Storing each primitive in a geometry.

Iter all MeshComponents.

Skip if no blas build requirment.

Build BLAS.

Definition at line 204 of file RayTracingRenderer.cpp.

205 {
207
211 std::vector<VulkanRayTracing::BlasInput> allBlas;
212
216 frameInfo.m_World->ViewComponent<MeshComponent>(*view, [&](auto e, auto& meshComp){
217
218 meshComp.GetMesh()->GetPacks().for_each([&](const uint32_t& k, const std::shared_ptr<MeshPack>& v) {
219
220 if (v->HasBlasAccel()) return false;
221
222 auto blas = v->MeshPackToVkGeometryKHR();
223 allBlas.emplace_back(blas);
224
225 return false;
226 });
227
228 return false;
229 });
230
234 if(allBlas.empty()) return;
235
239 rayTracingInstance->BuildBLAS(
240 allBlas,
241 VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR |
242 VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
243 //VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR // Compress cost too mush time in with large count of meshes.
244 );
245 }
#define SPICES_PROFILE_ZONE