| 1084 | } |
| 1085 | |
| 1086 | Accel* BVH8Factory::BVH8InstanceArray(Scene* scene, BuildVariant bvariant) |
| 1087 | { |
| 1088 | BVH8* accel = new BVH8(InstanceArrayPrimitive::type,scene); |
| 1089 | Accel::Intersectors intersectors = BVH8InstanceArrayIntersectors(accel); |
| 1090 | auto gtype = Geometry::MTY_INSTANCE_ARRAY; |
| 1091 | // Builder* builder = BVH8InstanceSceneBuilderSAH(accel,scene,gtype); |
| 1092 | |
| 1093 | Builder* builder = nullptr; |
| 1094 | if (scene->device->object_builder == "default") { |
| 1095 | switch (bvariant) { |
| 1096 | case BuildVariant::STATIC : builder = BVH8InstanceArraySceneBuilderSAH(accel,scene,gtype); break; |
| 1097 | case BuildVariant::DYNAMIC : builder = BVH8BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); break; |
| 1098 | case BuildVariant::HIGH_QUALITY: assert(false); break; |
| 1099 | } |
| 1100 | } |
| 1101 | else if (scene->device->object_builder == "sah") builder = BVH8InstanceArraySceneBuilderSAH(accel,scene,gtype); |
| 1102 | else if (scene->device->object_builder == "dynamic") builder = BVH8BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); |
| 1103 | else throw_RTCError(RTC_ERROR_INVALID_ARGUMENT,"unknown builder "+scene->device->object_builder+" for BVH8<Object>"); |
| 1104 | |
| 1105 | return new AccelInstance(accel,builder,intersectors); |
| 1106 | } |
| 1107 | |
| 1108 | Accel* BVH8Factory::BVH8InstanceMB(Scene* scene, bool isExpensive) |
| 1109 | { |
no test coverage detected