Ejemplo n.º 1
0
 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);
   }
 }
Ejemplo n.º 2
0
 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());
 }