42 for (const int face_index : range) {
43 const BMFace &face = *BM_face_at_index(&const_cast<BMesh &>(bm), face_index);
44 const BMLoop *loop = BM_FACE_FIRST_LOOP(&face);
45 for ([[maybe_unused]] const int i : IndexRange(face.len)) {
46 const int index = BM_elem_index_get(loop);
47 corners_data[index] = gpu::convert_normal<gpu::PackedNormal>(bm_vert_no_get(mr, loop->v));
53 const Span<int> loose_edges = mr.loose_edges;
55 for (const int i : range) {
56 const BMEdge &edge = *BM_edge_at_index(&const_cast<BMesh &>(bm), loose_edges[i]);
57 loose_edge_data[i * 2 + 0] = gpu::convert_normal<gpu::PackedNormal>(
58 bm_vert_no_get(mr, edge.v1));
59 loose_edge_data[i * 2 + 1] = gpu::convert_normal<gpu::PackedNormal>(
60 bm_vert_no_get(mr, edge.v2));
64 const Span<int> loose_verts = mr.loose_verts;
66 for (const int i : range) {
67 const BMVert &vert = *BM_vert_at_index(&const_cast<BMesh &>(bm), loose_verts[i]);
68 loose_vert_data[i] = gpu::convert_normal<gpu::PackedNormal>(bm_vert_no_get(mr, &vert));