RTCScene convertScene(ISPCScene* scene_in) { size_t numGeometries = scene_in->numGeometries; int scene_flags = RTC_SCENE_STATIC | RTC_SCENE_INCOHERENT; int scene_aflags = RTC_INTERSECT1 | RTC_INTERSECT_STREAM | RTC_INTERPOLATE; RTCScene scene_out = rtcDeviceNewScene(g_device, (RTCSceneFlags)scene_flags,(RTCAlgorithmFlags) scene_aflags); for (size_t i=0; i<scene_in->numGeometries; i++) { ISPCGeometry* geometry = scene_in->geometries[i]; if (geometry->type == SUBDIV_MESH) { unsigned int geomID = convertSubdivMesh((ISPCSubdivMesh*) geometry, scene_out); assert(geomID == i); } else if (geometry->type == TRIANGLE_MESH) { unsigned int geomID = convertTriangleMesh((ISPCTriangleMesh*) geometry, scene_out); assert(geomID == i); } else if (geometry->type == QUAD_MESH) { unsigned int geomID = convertQuadMesh((ISPCQuadMesh*) geometry, scene_out); assert(geomID == i); } else if (geometry->type == LINE_SEGMENTS) { unsigned int geomID = convertLineSegments((ISPCLineSegments*) geometry, scene_out); assert(geomID == i); } else if (geometry->type == HAIR_SET) { unsigned int geomID = convertHairSet((ISPCHairSet*) geometry, scene_out); assert(geomID == i); } else if (geometry->type == CURVES) { unsigned int geomID = convertCurveGeometry((ISPCHairSet*) geometry, scene_out); assert(geomID == i); } else assert(false); } return scene_out; }
void createObject(const size_t i, ISPCScene* scene_in, RTCScene scene_out) { ISPCGeometry* geometry = scene_in->geometries[i]; unsigned int geomID = 0; if (geometry->type == SUBDIV_MESH) { geomID = convertSubdivMesh((ISPCSubdivMesh*) geometry, scene_out); ((ISPCSubdivMesh*)geometry)->geom.geomID = geomID; assert(geomID == i); } else if (geometry->type == TRIANGLE_MESH) { geomID = convertTriangleMesh((ISPCTriangleMesh*) geometry, scene_out); ((ISPCTriangleMesh*)geometry)->geom.geomID = geomID; assert(geomID == i); } else if (geometry->type == QUAD_MESH) { geomID = convertQuadMesh((ISPCQuadMesh*) geometry, scene_out); ((ISPCQuadMesh*)geometry)->geom.geomID = geomID; assert(geomID == i); } else if (geometry->type == LINE_SEGMENTS) { geomID = convertLineSegments((ISPCLineSegments*) geometry, scene_out); ((ISPCLineSegments*)geometry)->geom.geomID = geomID; assert(geomID == i); } else if (geometry->type == HAIR_SET) { geomID = convertHairSet((ISPCHairSet*) geometry, scene_out); ((ISPCHairSet*)geometry)->geom.geomID = geomID; assert(geomID == i); } else if (geometry->type == CURVES) { geomID = convertCurveGeometry((ISPCHairSet*) geometry, scene_out); ((ISPCHairSet*)geometry)->geom.geomID = geomID; assert(geomID == i); } else assert(false); }