| 1088 | } |
| 1089 | |
| 1090 | extern "C" RTCScene ConvertScene(RTCDevice g_device, ISPCScene* scene_in, RTCBuildQuality quality, RTCSceneFlags flags, RTCFeatureFlags *used_features_out) |
| 1091 | { |
| 1092 | TutorialScene* tutorial_scene = (TutorialScene*) scene_in->tutorialScene; |
| 1093 | if (!tutorial_scene) return scene_in->scene; |
| 1094 | |
| 1095 | RTCFeatureFlags used_features = RTC_FEATURE_FLAG_NONE; |
| 1096 | |
| 1097 | RTCScene scene = scene_in->scene; |
| 1098 | rtcSetSceneFlags(scene, flags); |
| 1099 | |
| 1100 | for (unsigned int geomID=0; geomID<scene_in->numGeometries; geomID++) |
| 1101 | { |
| 1102 | ISPCGeometry* geometry = scene_in->geometries[geomID]; |
| 1103 | if (geometry->type == SUBDIV_MESH) |
| 1104 | ConvertSubdivMesh(g_device,(ISPCSubdivMesh*) geometry, quality, flags, used_features); |
| 1105 | else if (geometry->type == TRIANGLE_MESH) |
| 1106 | ConvertTriangleMesh(g_device,(ISPCTriangleMesh*) geometry, quality, flags, used_features); |
| 1107 | else if (geometry->type == QUAD_MESH) |
| 1108 | ConvertQuadMesh(g_device,(ISPCQuadMesh*) geometry, quality, flags, used_features); |
| 1109 | else if (geometry->type == CURVES) |
| 1110 | ConvertCurveGeometry(g_device,(ISPCHairSet*) geometry, quality, flags, used_features); |
| 1111 | else if (geometry->type == GRID_MESH) |
| 1112 | ConvertGridMesh(g_device,(ISPCGridMesh*) geometry, quality, flags, used_features); |
| 1113 | else if (geometry->type == POINTS) |
| 1114 | ConvertPoints(g_device,(ISPCPointSet*) geometry, quality, flags, used_features); |
| 1115 | else if (geometry->type == INSTANCE) |
| 1116 | ConvertInstance(g_device, (ISPCInstance*) geometry, quality, flags, 0, used_features); |
| 1117 | else if (geometry->type == INSTANCE_ARRAY) |
| 1118 | ConvertInstanceArray(g_device, (ISPCInstanceArray*) geometry, quality, flags, 0, used_features); |
| 1119 | else |
| 1120 | assert(false); |
| 1121 | |
| 1122 | rtcAttachGeometryByID(scene,geometry->geometry,geomID); |
| 1123 | } |
| 1124 | |
| 1125 | if (Application::instance) { |
| 1126 | Application::instance->log(1,"scene features = " + to_string(used_features)); |
| 1127 | Application::instance->log(1,"creating Embree objects done"); |
| 1128 | } |
| 1129 | |
| 1130 | if (used_features_out) |
| 1131 | *used_features_out = used_features; |
| 1132 | |
| 1133 | return scene; |
| 1134 | } |
| 1135 | |
| 1136 | extern "C" void UpdateScene(ISPCScene* scene_in, float time) |
| 1137 | { |
no test coverage detected