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

Function createPrimRefArrayMBlur

kernels/builders/primrefgen.cpp:81–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79 }
80
81 PrimInfo createPrimRefArrayMBlur(Scene* scene, Geometry::GTypeMask types, const size_t numPrimRefs, mvector<PrimRef>& prims, BuildProgressMonitor& progressMonitor, size_t itime)
82 {
83 ParallelForForPrefixSumState<PrimInfo> pstate;
84 Scene::Iterator2 iter(scene,types,true);
85
86 /* first try */
87 progressMonitor(0);
88 pstate.init(iter,size_t(1024));
89 PrimInfo pinfo = parallel_for_for_prefix_sum0( pstate, iter, PrimInfo(empty), [&](Geometry* mesh, const range<size_t>& r, size_t k, size_t geomID) -> PrimInfo {
90 return mesh->createPrimRefArrayMB(prims,itime,r,k,(unsigned)geomID);
91 }, [](const PrimInfo& a, const PrimInfo& b) -> PrimInfo { return PrimInfo::merge(a,b); });
92
93 /* if we need to filter out geometry, run again */
94 if (pinfo.size() != numPrimRefs)
95 {
96 progressMonitor(0);
97 pinfo = parallel_for_for_prefix_sum1( pstate, iter, PrimInfo(empty), [&](Geometry* mesh, const range<size_t>& r, size_t k, size_t geomID, const PrimInfo& base) -> PrimInfo {
98 return mesh->createPrimRefArrayMB(prims,itime,r,base.size(),(unsigned)geomID);
99 }, [](const PrimInfo& a, const PrimInfo& b) -> PrimInfo { return PrimInfo::merge(a,b); });
100 }
101 return pinfo;
102 }
103
104 PrimInfoMB createPrimRefArrayMSMBlur(Scene* scene, Geometry::GTypeMask types, const size_t numPrimRefs, mvector<PrimRefMB>& prims, BuildProgressMonitor& progressMonitor, BBox1f t0t1)
105 {

Callers 1

buildSingleSegmentMethod · 0.85

Calls 7

progressMonitorFunction · 0.85
mergeFunction · 0.70
initMethod · 0.45
createPrimRefArrayMBMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected