| 53 | } |
| 54 | |
| 55 | void convertSubdivMesh(ISPCSubdivMesh* mesh, RTCScene scene_out, RTCBuildQuality quality) |
| 56 | { |
| 57 | RTCGeometry geom = rtcNewGeometry(g_device, RTC_GEOMETRY_TYPE_SUBDIVISION); |
| 58 | rtcSetGeometryTimeStepCount(geom, mesh->numTimeSteps); |
| 59 | rtcSetGeometryBuildQuality(geom, quality); |
| 60 | for (size_t i=0; i<mesh->numEdges; i++) mesh->subdivlevel[i] = 16.0f; |
| 61 | for (size_t t=0; t<mesh->numTimeSteps; t++) { |
| 62 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX, (unsigned int)t, RTC_FORMAT_FLOAT3, mesh->positions[t], 0, sizeof(Vec3fa), mesh->numVertices); |
| 63 | } |
| 64 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_LEVEL, 0, RTC_FORMAT_FLOAT, mesh->subdivlevel, 0, sizeof(float), mesh->numEdges); |
| 65 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT, mesh->position_indices, 0, sizeof(unsigned int), mesh->numEdges); |
| 66 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_FACE, 0, RTC_FORMAT_UINT, mesh->verticesPerFace, 0, sizeof(unsigned int), mesh->numFaces); |
| 67 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_HOLE, 0, RTC_FORMAT_UINT, mesh->holes, 0, sizeof(unsigned int), mesh->numHoles); |
| 68 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_EDGE_CREASE_INDEX, 0, RTC_FORMAT_UINT2, mesh->edge_creases, 0, 2*sizeof(unsigned int), mesh->numEdgeCreases); |
| 69 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT, 0, RTC_FORMAT_FLOAT, mesh->edge_crease_weights, 0, sizeof(float), mesh->numEdgeCreases); |
| 70 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX, 0, RTC_FORMAT_UINT, mesh->vertex_creases, 0, sizeof(unsigned int), mesh->numVertexCreases); |
| 71 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT, 0, RTC_FORMAT_FLOAT, mesh->vertex_crease_weights, 0, sizeof(float), mesh->numVertexCreases); |
| 72 | rtcSetGeometrySubdivisionMode(geom, 0, mesh->position_subdiv_mode); |
| 73 | rtcCommitGeometry(geom); |
| 74 | rtcAttachGeometry(scene_out,geom); |
| 75 | rtcReleaseGeometry(geom); |
| 76 | } |
| 77 | |
| 78 | void convertCurveGeometry(ISPCHairSet* hair, RTCScene scene_out, RTCBuildQuality quality) |
| 79 | { |
no test coverage detected