Splitter<Heuristic>::Splitter (const TaskScheduler::ThreadInfo& thread, PrimRefAlloc* alloc, const BuildTriangle* triangles, const Vec3fa* vertices, atomic_set<PrimRefBlock>& prims, const PrimInfo& pinfo, const Split& psplit) { /* if split was not successfull enforce some split */ if (unlikely(psplit.linfo.size() == 0 || psplit.rinfo.size() == 0)) { FallBackSplitter<Heuristic,atomic_set<PrimRefBlock> >::split(thread,alloc,triangles,vertices,prims,pinfo,lprims,linfo,lsplit,rprims,rinfo,rsplit); } /* split with support for duplications */ else if (unlikely(psplit.spatial())) { split_spatial(thread,alloc,triangles,vertices,prims,pinfo,psplit); } /* otherwise perform normal split */ else { split(thread,alloc,triangles,vertices,prims,pinfo,psplit); } }
Splitter<Heuristic>::Splitter (size_t thread, PrimRefAlloc* alloc, const RTCGeometry* geom, atomic_set<PrimRefBlock>& prims, const PrimInfo& pinfo, const Split& psplit) { /* if split was not successfull enforce some split */ if (unlikely(psplit.linfo.size() == 0 || psplit.rinfo.size() == 0)) { FallBackSplitter<Heuristic,atomic_set<PrimRefBlock> >::split(thread,alloc,geom,prims,pinfo,lprims,linfo,lsplit,rprims,rinfo,rsplit); } /* split with support for duplications */ else if (unlikely(psplit.spatial())) { split_spatial(thread,alloc,geom,prims,pinfo,psplit); } /* otherwise perform normal split */ else { split(thread,alloc,geom,prims,pinfo,psplit); } assert(linfo.size()); assert(rinfo.size()); }