| 1253 | } |
| 1254 | |
| 1255 | Accel* BVH4Factory::BVH4InstanceArray(Scene* scene, BuildVariant bvariant) |
| 1256 | { |
| 1257 | BVH4* accel = new BVH4(InstanceArrayPrimitive::type,scene); |
| 1258 | Accel::Intersectors intersectors = BVH4InstanceArrayIntersectors(accel); |
| 1259 | auto gtype = Geometry::MTY_INSTANCE_ARRAY; |
| 1260 | |
| 1261 | Builder* builder = nullptr; |
| 1262 | if (scene->device->object_builder == "default") { |
| 1263 | switch (bvariant) { |
| 1264 | case BuildVariant::STATIC : builder = BVH4InstanceArraySceneBuilderSAH(accel,scene,gtype); break; |
| 1265 | case BuildVariant::DYNAMIC : builder = BVH4BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); break; |
| 1266 | case BuildVariant::HIGH_QUALITY: assert(false); break; |
| 1267 | } |
| 1268 | } |
| 1269 | else if (scene->device->object_builder == "sah") { builder = BVH4InstanceArraySceneBuilderSAH(accel,scene,gtype); } |
| 1270 | else if (scene->device->object_builder == "dynamic") { builder = BVH4BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); } |
| 1271 | else throw_RTCError(RTC_ERROR_INVALID_ARGUMENT,"unknown builder "+scene->device->object_builder+" for BVH4<Object>"); |
| 1272 | |
| 1273 | return new AccelInstance(accel,builder,intersectors); |
| 1274 | } |
| 1275 | |
| 1276 | Accel* BVH4Factory::BVH4InstanceArrayMB(Scene* scene) |
| 1277 | { |
no test coverage detected