Mesh: Replace MLoop struct with generic attributes #104424
|
@ -235,7 +235,7 @@ static DerivedMesh *cdDM_from_mesh_ex(Mesh *mesh,
|
|||
cddm->vert_normals = BKE_mesh_vertex_normals_ensure(mesh);
|
||||
cddm->medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE);
|
||||
cddm->corner_verts = CustomData_get_layer_named(&dm->loopData, CD_PROP_INT32, ".corner_vert");
|
||||
cddm->corner_edges = CustomData_get_layer_named(&dm->loopData, CD_PROP_INT32, ".corner_vert");
|
||||
cddm->corner_edges = CustomData_get_layer_named(&dm->loopData, CD_PROP_INT32, ".corner_edge");
|
||||
cddm->mpoly = CustomData_get_layer(&dm->polyData, CD_MPOLY);
|
||||
#if 0
|
||||
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
|
||||
|
|
|
@ -92,8 +92,7 @@ static void set_coarse_positions(Subdiv *subdiv,
|
|||
for (int poly_index = 0; poly_index < mesh->totpoly; poly_index++) {
|
||||
const MPoly *poly = &mpoly[poly_index];
|
||||
for (int i = 0; i < poly->totloop; i++) {
|
||||
const int corner = poly->loopstart + i;
|
||||
BLI_BITMAP_ENABLE(vertex_used_map, corner_verts[corner]);
|
||||
BLI_BITMAP_ENABLE(vertex_used_map, corner_verts[poly->loopstart + i]);
|
||||
}
|
||||
}
|
||||
/* Use a temporary buffer so we do not upload vertices one at a time to the GPU. */
|
||||
|
|
|
@ -431,7 +431,7 @@ static void subdiv_foreach_edge_vertices_regular_do(SubdivForeachTaskContext *ct
|
|||
const int ptex_face_index = ctx->face_ptex_offset[coarse_poly_index];
|
||||
for (int corner = 0; corner < coarse_poly->totloop; corner++) {
|
||||
const int coarse_vert_index = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int coarse_edge_index = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int coarse_edge_index = ctx->coarse_corner_edges[coarse_poly->loopstart + corner];
|
||||
if (check_usage &&
|
||||
BLI_BITMAP_TEST_AND_SET_ATOMIC(ctx->coarse_edges_used_map, coarse_edge_index)) {
|
||||
continue;
|
||||
|
@ -494,7 +494,7 @@ static void subdiv_foreach_edge_vertices_special_do(SubdivForeachTaskContext *ct
|
|||
int ptex_face_index = ptex_face_start_index;
|
||||
for (int corner = 0; corner < coarse_poly->totloop; corner++, ptex_face_index++) {
|
||||
const int coarse_vert_index = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int coarse_edge_index = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int coarse_edge_index = ctx->coarse_corner_edges[coarse_poly->loopstart + corner];
|
||||
if (check_usage &&
|
||||
BLI_BITMAP_TEST_AND_SET_ATOMIC(ctx->coarse_edges_used_map, coarse_edge_index)) {
|
||||
continue;
|
||||
|
@ -793,7 +793,7 @@ static void subdiv_foreach_edges_all_patches_regular(SubdivForeachTaskContext *c
|
|||
/* Connect inner part of patch to boundary. */
|
||||
for (int corner = 0; corner < coarse_poly->totloop; corner++) {
|
||||
const int coarse_vert_index = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int coarse_edge_index = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int coarse_edge_index = ctx->coarse_corner_edges[coarse_poly->loopstart + corner];
|
||||
const MEdge *coarse_edge = &ctx->coarse_edges[coarse_edge_index];
|
||||
const int start_edge_vertex = ctx->vertices_edge_offset +
|
||||
coarse_edge_index * num_subdiv_vertices_per_coarse_edge;
|
||||
|
@ -901,11 +901,11 @@ static void subdiv_foreach_edges_all_patches_special(SubdivForeachTaskContext *c
|
|||
}
|
||||
}
|
||||
/* Connect inner path of patch to boundary. */
|
||||
int prev_corner_index = coarse_poly->totloop - 1;
|
||||
int prev_corner = coarse_poly->totloop - 1;
|
||||
for (int corner = 0; corner < coarse_poly->totloop; corner++) {
|
||||
const int vert_i = ctx->coarse_corner_verts[coarse_poly->loopstart + corner];
|
||||
const int edge_i = ctx->coarse_corner_edges[coarse_poly->loopstart + corner];
|
||||
const int prev_edge_i = ctx->coarse_corner_edges[coarse_poly->loopstart + prev_corner_index];
|
||||
const int prev_edge_i = ctx->coarse_corner_edges[coarse_poly->loopstart + prev_corner];
|
||||
{
|
||||
const MEdge *coarse_edge = &ctx->coarse_edges[edge_i];
|
||||
const int start_edge_vertex = ctx->vertices_edge_offset +
|
||||
|
@ -940,7 +940,7 @@ static void subdiv_foreach_edges_all_patches_special(SubdivForeachTaskContext *c
|
|||
ctx->foreach_context, tls, ORIGINDEX_NONE, subdiv_edge_index, false, v1, v2);
|
||||
}
|
||||
}
|
||||
prev_corner_index = corner;
|
||||
prev_corner = corner;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1719,7 +1719,7 @@ static void nearest2d_data_init_mesh(const Mesh *mesh,
|
|||
r_nearest2d->vert_normals = BKE_mesh_vertex_normals_ensure(mesh);
|
||||
r_nearest2d->edge = mesh->edges().data();
|
||||
r_nearest2d->corner_verts = mesh->corner_verts().data();
|
||||
r_nearest2d->corner_verts = mesh->corner_edges().data();
|
||||
r_nearest2d->corner_edges = mesh->corner_edges().data();
|
||||
r_nearest2d->looptri = BKE_mesh_runtime_looptri_ensure(mesh);
|
||||
|
||||
r_nearest2d->is_persp = is_persp;
|
||||
|
|
|
@ -561,7 +561,7 @@ static void duplicate_faces(GeometrySet &geometry_set,
|
|||
new_polys[poly_index].loopstart = loop_index;
|
||||
for (const int i_loops : IndexRange(source.totloop)) {
|
||||
const int src_corner_i = source.loopstart + i_loops;
|
||||
corner_mapping[loop_index] = source.loopstart + i_loops;
|
||||
corner_mapping[loop_index] = src_corner_i;
|
||||
vert_mapping[loop_index] = corner_verts[src_corner_i];
|
||||
new_edges[loop_index] = edges[corner_edges[src_corner_i]];
|
||||
edge_mapping[loop_index] = corner_edges[src_corner_i];
|
||||
|
|
Loading…
Reference in New Issue