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

Function createPrimRefArray

kernels/builders/primrefgen.cpp:14–33  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12 namespace isa
13 {
14 PrimInfo createPrimRefArray(Geometry* geometry, unsigned int geomID, const size_t numPrimRefs, mvector<PrimRef>& prims, BuildProgressMonitor& progressMonitor)
15 {
16 ParallelPrefixSumState<PrimInfo> pstate;
17
18 /* first try */
19 progressMonitor(0);
20 PrimInfo pinfo = parallel_prefix_sum( pstate, size_t(0), geometry->size(), size_t(1024), PrimInfo(empty), [&](const range<size_t>& r, const PrimInfo& base) -> PrimInfo {
21 return geometry->createPrimRefArray(prims,r,r.begin(),geomID);
22 }, [](const PrimInfo& a, const PrimInfo& b) -> PrimInfo { return PrimInfo::merge(a,b); });
23
24 /* if we need to filter out geometry, run again */
25 if (pinfo.size() != numPrimRefs)
26 {
27 progressMonitor(0);
28 pinfo = parallel_prefix_sum( pstate, size_t(0), geometry->size(), size_t(1024), PrimInfo(empty), [&](const range<size_t>& r, const PrimInfo& base) -> PrimInfo {
29 return geometry->createPrimRefArray(prims,r,base.size(),geomID);
30 }, [](const PrimInfo& a, const PrimInfo& b) -> PrimInfo { return PrimInfo::merge(a,b); });
31 }
32 return pinfo;
33 }
34
35 PrimInfo createPrimRefArray(Scene* scene, Geometry::GTypeMask types, bool mblur, const size_t numPrimRefs, mvector<PrimRef>& prims, BuildProgressMonitor& progressMonitor)
36 {

Callers 5

buildMethod · 0.50
buildMethod · 0.50
buildMethod · 0.50
buildMethod · 0.50
attachBuildRefsMethod · 0.50

Calls 9

progressMonitorFunction · 0.85
parallel_prefix_sumFunction · 0.85
mergeFunction · 0.70
sizeMethod · 0.45
createPrimRefArrayMethod · 0.45
beginMethod · 0.45
initMethod · 0.45

Tested by

no test coverage detected