Pack PrimVertices from Sparse PrimVertices Inputs.
param [in,out] primVerticesMapReverse .
Merge Vertex.
Flatten Vertex Position.
Merge Vertex.
Flatten Vertex Position.
942 {
944
948 std::unordered_map<uint32_t, uint32_t> primVerticesMap;
949 for (auto& primVertex : primVertices)
950 {
951 if (primVerticesMap.find(primVertex.x) == primVerticesMap.end()) primVerticesMap[primVertex.x] = primVerticesMap.size();
952 if (primVerticesMap.find(primVertex.y) == primVerticesMap.end()) primVerticesMap[primVertex.y] = primVerticesMap.size();
953 if (primVerticesMap.find(primVertex.z) == primVerticesMap.end()) primVerticesMap[primVertex.z] = primVerticesMap.size();
954 }
955
959 packPoints.resize(primVerticesMap.size());
960 auto& vertices = *meshPack->m_MeshResource.vertices.attributes;
961 for (auto& pair : primVerticesMap)
962 {
963 packPoints[pair.second] = (*meshPack->m_MeshResource.positions.attributes)[vertices[pair.first].x];
964 primVerticesMapReverse[pair.second] = pair.first;
965 }
966
967 packPrimPoints.resize(primVertices.size());
968 for (int i = 0; i < primVertices.size(); i++)
969 {
970 glm::uvec3 primVertex = primVertices[i];
971
972 packPrimPoints[i].x = primVerticesMap[primVertex.x];
973 packPrimPoints[i].y = primVerticesMap[primVertex.y];
974 packPrimPoints[i].z = primVerticesMap[primVertex.z];
975 }
976
977 return true;
978 }
#define SPICES_PROFILE_ZONE