| 41 | |
| 42 | |
| 43 | void updateEdgeLevelBuffer( ISPCSubdivMesh* mesh, const Vec3fa& cam_pos, unsigned int startID, unsigned int endID ) |
| 44 | { |
| 45 | for (unsigned int f=startID; f<endID;f++) { |
| 46 | unsigned int e = mesh->face_offsets[f]; |
| 47 | unsigned int N = mesh->verticesPerFace[f]; |
| 48 | if (N == 4) /* fast path for quads */ |
| 49 | for (unsigned int i=0; i<4; i++) |
| 50 | mesh->subdivlevel[e+i] = updateEdgeLevel(mesh,cam_pos,e+(i+0),e+(i+1)%4); |
| 51 | else if (N == 3) /* fast path for triangles */ |
| 52 | for (unsigned int i=0; i<3; i++) |
| 53 | mesh->subdivlevel[e+i] = updateEdgeLevel(mesh,cam_pos,e+(i+0),e+(i+1)%3); |
| 54 | else /* fast path for general polygons */ |
| 55 | for (unsigned int i=0; i<N; i++) |
| 56 | mesh->subdivlevel[e+i] = updateEdgeLevel(mesh,cam_pos,e+(i+0),e+(i+1)%N); |
| 57 | } |
| 58 | } |
| 59 | |
| 60 | #if defined(ISPC) |
| 61 | void updateSubMeshEdgeLevelBufferTask (int taskIndex, int threadIndex, ISPCSubdivMesh* mesh, const Vec3fa& cam_pos ) |
no test coverage detected