SpatialSplit::TaskSplitParallel<Prim>::TaskSplitParallel(size_t threadIndex, size_t threadCount, LockStepTaskScheduler* scheduler, const Split* split, PrimRefBlockAlloc<Prim>& alloc, Scene* scene, List& prims, List& lprims_o, PrimInfo& linfo_o, List& rprims_o, PrimInfo& rinfo_o) : split(split), alloc(alloc), scene(scene), prims(prims), lprims_o(lprims_o), linfo_o(linfo_o), rprims_o(rprims_o), rinfo_o(rinfo_o) { /* parallel calculation of centroid bounds */ size_t numTasks = min(maxTasks,threadCount); scheduler->dispatchTask(threadIndex,numTasks,_task_split_parallel,this,numTasks,"build::task_split_parallel"); /* reduction of bounding info */ linfo_o = linfos[0]; rinfo_o = rinfos[0]; for (size_t i=1; i<numTasks; i++) { linfo_o.merge(linfos[i]); rinfo_o.merge(rinfos[i]); } }