MCPcopy Create free account
hub / github.com/RenderKit/embree / createPrimRefArrayMSMBlurGrid

Function createPrimRefArrayMSMBlurGrid

kernels/builders/primrefgen.cpp:310–345  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

308 }
309
310 PrimInfoMB createPrimRefArrayMSMBlurGrid(Scene* scene, mvector<PrimRefMB>& prims, mvector<SubGridBuildData>& sgrids, BuildProgressMonitor& progressMonitor, BBox1f t0t1)
311 {
312 /* first run to get #primitives */
313 ParallelForForPrefixSumState<PrimInfoMB> pstate;
314 Scene::Iterator<GridMesh,true> iter(scene);
315
316 pstate.init(iter,size_t(1024));
317 /* iterate over all meshes in the scene */
318 PrimInfoMB pinfoMB = parallel_for_for_prefix_sum0( pstate, iter, PrimInfoMB(empty), [&](GridMesh* mesh, const range<size_t>& r, size_t k, size_t /*geomID*/) -> PrimInfoMB {
319
320 PrimInfoMB pinfoMB(empty);
321 for (size_t j=r.begin(); j<r.end(); j++)
322 {
323 if (!mesh->valid(j, mesh->timeSegmentRange(t0t1))) continue;
324 LBBox3fa bounds(empty);
325 PrimInfoMB gridMB(0,mesh->getNumSubGrids(j));
326 pinfoMB.merge(gridMB);
327 }
328 return pinfoMB;
329 }, [](const PrimInfoMB& a, const PrimInfoMB& b) -> PrimInfoMB { return PrimInfoMB::merge2(a,b); });
330
331 size_t numPrimitives = pinfoMB.size();
332 if (numPrimitives == 0) return pinfoMB;
333
334 /* resize arrays */
335 sgrids.resize(numPrimitives);
336 prims.resize(numPrimitives);
337 /* second run to fill primrefs and SubGridBuildData arrays */
338 pinfoMB = parallel_for_for_prefix_sum1( pstate, iter, PrimInfoMB(empty), [&](GridMesh* mesh, const range<size_t>& r, size_t k, size_t geomID, const PrimInfoMB& base) -> PrimInfoMB {
339 return mesh->createPrimRefMBArray(prims,sgrids,t0t1,r,base.size(),(unsigned)geomID);
340 }, [](const PrimInfoMB& a, const PrimInfoMB& b) -> PrimInfoMB { return PrimInfoMB::merge2(a,b); });
341
342 assert(pinfoMB.size() == numPrimitives);
343 pinfoMB.time_range = t0t1;
344 return pinfoMB;
345 }
346
347#endif
348

Callers 1

buildMultiSegmentMethod · 0.85

Calls 12

timeSegmentRangeMethod · 0.80
getNumSubGridsMethod · 0.80
initMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
validMethod · 0.45
mergeMethod · 0.45
sizeMethod · 0.45
resizeMethod · 0.45
createPrimRefMBArrayMethod · 0.45

Tested by

no test coverage detected