[Bf-blender-cvs] [f4f4987578f] refactor-mesh-corners-generic: Fix various incorrect indexing

Hans Goudey noreply at git.blender.org
Wed Dec 7 23:23:31 CET 2022


Commit: f4f4987578f8c4f3646c735e915da46a8dbd8983
Author: Hans Goudey
Date:   Wed Dec 7 16:23:22 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rBf4f4987578f8c4f3646c735e915da46a8dbd8983

Fix various incorrect indexing

===================================================================

M	source/blender/blenkernel/intern/cdderivedmesh.c
M	source/blender/blenkernel/intern/subdiv_eval.c
M	source/blender/blenkernel/intern/subdiv_foreach.c
M	source/blender/editors/transform/transform_snap_object.cc
M	source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 58bcd0c4c0b..6790f9ca956 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -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);
diff --git a/source/blender/blenkernel/intern/subdiv_eval.c b/source/blender/blenkernel/intern/subdiv_eval.c
index 1c442f45a31..6505c7c175f 100644
--- a/source/blender/blenkernel/intern/subdiv_eval.c
+++ b/source/blender/blenkernel/intern/subdiv_eval.c
@@ -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. */
diff --git a/source/blender/blenkernel/intern/subdiv_foreach.c b/source/blender/blenkernel/intern/subdiv_foreach.c
index 3f7feebefbb..f1dbb8cf415 100644
--- a/source/blender/blenkernel/intern/subdiv_foreach.c
+++ b/source/blender/blenkernel/intern/subdiv_foreach.c
@@ -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;
   }
 }
 
diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc
index 762ba23c23e..ec57bf0de5a 100644
--- a/source/blender/editors/transform/transform_snap_object.cc
+++ b/source/blender/editors/transform/transform_snap_object.cc
@@ -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;
diff --git a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
index 649d0327bb0..7e692db05f0 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
@@ -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];



More information about the Bf-blender-cvs mailing list