Esempio n. 1
0
 Accel* BVH8Factory::BVH8Triangle4ObjectSplit(Scene* scene)
 {
   BVH8* accel = new BVH8(Triangle4::type,scene);
   Accel::Intersectors intersectors= BVH8Triangle4Intersectors(accel);
   Builder* builder = BVH8Triangle4SceneBuilderSAH(accel,scene,0);
   return new AccelInstance(accel,builder,intersectors);
 }
Esempio n. 2
0
 Accel* BVH8::BVH8Triangle4SpatialSplit(Scene* scene)
 {
   BVH8* accel = new BVH8(Triangle4Type::type,scene);
   Accel::Intersectors intersectors= BVH8Triangle4Intersectors(accel);
   Builder* builder = BVH8Triangle4Builder(accel,scene,1);
   return new AccelInstance(accel,builder,intersectors);
 }
Esempio n. 3
0
 Accel* BVH8Factory::BVH8Triangle4SpatialSplit(Scene* scene)
 {
   BVH8* accel = new BVH8(Triangle4::type,scene);
   Accel::Intersectors intersectors= BVH8Triangle4Intersectors(accel);
   Builder *builder = NULL;
   if (scene->device->tri_builder == "sah_spatial" ) 
     builder = BVH8Triangle4SceneBuilderSpatialSAH(accel,scene,0);
   else
     builder = BVH8Triangle4SceneBuilderFastSpatialSAH(accel,scene,0);
   return new AccelInstance(accel,builder,intersectors);
 }
Esempio n. 4
0
  Accel* BVH8Factory::BVH8Triangle4(Scene* scene)
  {
    BVH8* accel = new BVH8(Triangle4::type,scene);
    Accel::Intersectors intersectors= BVH8Triangle4Intersectors(accel);
    Builder* builder = nullptr;
    if      (scene->device->tri_builder == "default"     )  builder = BVH8Triangle4SceneBuilderSAH(accel,scene,0);
    else if (scene->device->tri_builder == "sah"         )  builder = BVH8Triangle4SceneBuilderSAH(accel,scene,0);
    else if (scene->device->tri_builder == "sah_spatial" )  builder = BVH8Triangle4SceneBuilderSpatialSAH(accel,scene,0);
    else if (scene->device->tri_builder == "sah_presplit")     builder = BVH8Triangle4SceneBuilderSAH(accel,scene,MODE_HIGH_QUALITY);
    else throw_RTCError(RTC_INVALID_ARGUMENT,"unknown builder "+scene->device->tri_builder+" for BVH8<Triangle4>");

    return new AccelInstance(accel,builder,intersectors);
  }
Esempio n. 5
0
 Accel* BVH8::BVH8Triangle4(Scene* scene)
 { 
   BVH8* accel = new BVH8(Triangle4Type::type,scene);
   Accel::Intersectors intersectors= BVH8Triangle4Intersectors(accel);
   
   Builder* builder = NULL;
   if      (g_tri_builder == "default"     ) builder = BVH8Triangle4Builder(accel,scene,0);
   else if (g_tri_builder == "spatialsplit") builder = BVH8Triangle4Builder(accel,scene,1);
   else if (g_tri_builder == "objectsplit" ) builder = BVH8Triangle4Builder(accel,scene,0);
   else THROW_RUNTIME_ERROR("unknown builder "+g_tri_builder+" for BVH8<Triangle4>");
   
   return new AccelInstance(accel,builder,intersectors);
 }