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); }
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); }
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); }
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); }
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); }