| 1067 | } |
| 1068 | |
| 1069 | unsigned int ConvertInstanceArray(RTCDevice device, ISPCInstanceArray* instance, RTCBuildQuality quality, RTCSceneFlags flags, unsigned int depth, RTCFeatureFlags& used_features) |
| 1070 | { |
| 1071 | used_features |= RTC_FEATURE_FLAG_INSTANCE_ARRAY; |
| 1072 | if (instance->numTimeSteps > 1) used_features |= RTC_FEATURE_FLAG_MOTION_BLUR; |
| 1073 | |
| 1074 | if (instance->child->type != GROUP) |
| 1075 | THROW_RUNTIME_ERROR("invalid scene structure"); |
| 1076 | |
| 1077 | ISPCGroup* group = (ISPCGroup*) instance->child; |
| 1078 | unsigned int requiredInstancingDepth = 1+ConvertGroup(device, group, quality, flags, depth+1, used_features); |
| 1079 | |
| 1080 | if (depth + requiredInstancingDepth > RTC_MAX_INSTANCE_LEVEL_COUNT) |
| 1081 | THROW_RUNTIME_ERROR("scene instancing depth is too large"); |
| 1082 | |
| 1083 | if (instance->geom.visited) return requiredInstancingDepth; |
| 1084 | instance->geom.visited = true; |
| 1085 | instance->commit(); |
| 1086 | |
| 1087 | return requiredInstancingDepth; |
| 1088 | } |
| 1089 | |
| 1090 | extern "C" RTCScene ConvertScene(RTCDevice g_device, ISPCScene* scene_in, RTCBuildQuality quality, RTCSceneFlags flags, RTCFeatureFlags *used_features_out) |
| 1091 | { |
no test coverage detected