Beispiel #1
0
 Accel* BVH4iFactory::BVH4iTriangle1ObjectSplitMorton64Bit(Scene* scene, bool robust)
 {
   BVH4i* accel = new BVH4i(SceneTriangle1::type,scene);
   Builder* builder = BVH4iBuilderMorton64Bit::create(accel,scene);
   Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel,robust);
   return new AccelInstance(accel,builder,intersectors);
 }
Beispiel #2
0
 Accel* BVH4i::BVH4iTriangle1_morton_enhanced(Scene* scene)
 { 
   BVH4i* accel = new BVH4i(SceneTriangle1::type);
   Builder* builder = BVH4iTriangle1BuilderMortonEnhanced(accel,&scene->flat_triangle_source_1,scene,1,inf);
   Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel);
   return new AccelInstance(accel,builder,intersectors);
 }
Beispiel #3
0
 Accel* BVH4iFactory::BVH4iTriangle1ObjectSplitBinnedSAH(Scene* scene, bool robust)
 {
   BVH4i* accel = new BVH4i(SceneTriangle1::type,scene);
   Builder* builder = BVH4iBuilder::create(accel,scene,BVH4iBuilder::BVH4I_BUILDER_DEFAULT);
   Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel,robust);
   return new AccelInstance(accel,builder,intersectors);
 }
Beispiel #4
0
 Accel* BVH4i::BVH4iTriangle1_v1(Scene* scene)
 { 
   BVH4i* accel = new BVH4i(SceneTriangle1::type);
   Builder* builder = BVH4iTriangle1BuilderObjectSplit4Fast(accel,&scene->flat_triangle_source_1,scene,1,inf);
   
   Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel);
   return new AccelInstance(accel,builder,intersectors);
 }
Beispiel #5
0
 Accel* BVH4i::BVH4iTriangle1PreSplitsBinnedSAH(Scene* scene, bool robust)
 {
   BVH4i* accel = new BVH4i(SceneTriangle1::type,scene);
   
   Builder* builder = BVH4iBuilder::create(accel,scene,BVH4iBuilder::BVH4I_BUILDER_PRESPLITS);
   
   Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel,robust);
   return new AccelInstance(accel,builder,intersectors);    
 }
Beispiel #6
0
  Accel* BVH4i::BVH4iTriangle1_v2(Scene* scene)
  { 
    BVH4i* accel = new BVH4i(SceneTriangle1::type);
    Builder* builder = BVH4iTriangle1BuilderObjectSplit4Fast(accel,&scene->flat_triangle_source_1,scene,1,inf);
    
    Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel);
#if defined(__TARGET_AVX2__)
    intersectors.intersector8 = BVH4iTriangle1Intersector8ChunkAVX2;
#endif
    return new AccelInstance(accel,builder,intersectors);
  }
Beispiel #7
0
  Accel* BVH4i::BVH4iTriangle1(TriangleMeshScene::TriangleMesh* mesh)
  {
    BVH4i* accel = new BVH4i(TriangleMeshTriangle1::type);

    Builder* builder = NULL;
    if      (g_builder == "default"     ) builder = BVH4iBuilderObjectSplit1(accel,mesh,mesh,1,inf);
    else if (g_builder == "spatialsplit") builder = BVH4iBuilderSpatialSplit1(accel,mesh,mesh,1,inf);
    else if (g_builder == "objectsplit" ) builder = BVH4iBuilderObjectSplit1(accel,mesh,mesh,1,inf);
    else throw std::runtime_error("unknown builder "+g_builder+" for BVH4i<Triangle1>");

    Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel);
    return new AccelInstance(accel,builder,intersectors);
  }
Beispiel #8
0
 Accel* BVH4i::BVH4iTriangle1(Scene* scene)
 { 
   BVH4i* accel = new BVH4i(SceneTriangle1::type);
   
   Builder* builder = NULL;
   if      (g_builder == "default"     ) builder = BVH4iBuilderObjectSplit1(accel,&scene->flat_triangle_source_1,scene,1,inf);
   else if (g_builder == "spatialsplit") builder = BVH4iBuilderSpatialSplit1(accel,&scene->flat_triangle_source_1,scene,1,inf);
   else if (g_builder == "objectsplit" ) builder = BVH4iBuilderObjectSplit1(accel,&scene->flat_triangle_source_1,scene,1,inf);
   else if (g_builder == "objectsplit_fast") builder = BVH4iTriangle1BuilderObjectSplit4Fast(accel,&scene->flat_triangle_source_1,scene,1,inf);
   else if (g_builder == "morton"          ) builder = BVH4iTriangle1BuilderMorton(accel,&scene->flat_triangle_source_1,scene,1,inf);
   else if (g_builder == "morton.enhanced" ) builder = BVH4iTriangle1BuilderMortonEnhanced(accel,&scene->flat_triangle_source_1,scene,1,inf);
   else throw std::runtime_error("unknown builder "+g_builder+" for BVH4i<Triangle1>");
   
   Accel::Intersectors intersectors = BVH4iTriangle1Intersectors(accel);
   return new AccelInstance(accel,builder,intersectors);
 }