[Bf-blender-cvs] [d0c28587141] refactor-mesh-corners-generic: 104 remaining uses of MLoop

Hans Goudey noreply at git.blender.org
Mon Dec 5 05:58:56 CET 2022


Commit: d0c28587141830894b8a6c491bfdee28515f9003
Author: Hans Goudey
Date:   Sun Dec 4 22:58:47 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rBd0c28587141830894b8a6c491bfdee28515f9003

104 remaining uses of MLoop

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

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/DerivedMesh.cc
M	source/blender/blenkernel/intern/dynamicpaint.c
M	source/blender/blenkernel/intern/fluid.c
M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/mesh_boolean_convert.cc
M	source/blender/blenkernel/intern/mesh_merge.c
M	source/blender/blenkernel/intern/mesh_merge_customdata.cc
M	source/blender/blenkernel/intern/mesh_mirror.cc
M	source/blender/blenkernel/intern/mesh_validate.cc
M	source/blender/blenkernel/intern/multires_reshape_subdivide.c
M	source/blender/blenkernel/intern/multires_reshape_util.c
M	source/blender/draw/intern/draw_cache_extract_mesh_render_data.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_attributes.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edit_data.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edituv_data.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_pos.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_uv.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_lnor.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_mesh_analysis.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_orco.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_select_idx.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
M	source/blender/editors/armature/meshlaplacian.c
M	source/blender/editors/object/object_bake_api.c
M	source/blender/editors/sculpt_paint/paint_mask.c
M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
M	source/blender/gpu/intern/gpu_shader_builder_stubs.cc
M	source/blender/io/collada/MeshImporter.cpp
M	source/blender/makesdna/DNA_meshdata_types.h
M	source/blender/makesrna/intern/rna_mesh.c
M	source/blender/makesrna/intern/rna_mesh_api.c
M	source/blender/modifiers/intern/MOD_array.c
M	source/blender/modifiers/intern/MOD_build.c
M	source/blender/modifiers/intern/MOD_collision.c
M	source/blender/modifiers/intern/MOD_correctivesmooth.c
M	source/blender/modifiers/intern/MOD_displace.cc
M	source/blender/modifiers/intern/MOD_laplaciansmooth.c
M	source/blender/modifiers/intern/MOD_mask.cc
M	source/blender/modifiers/intern/MOD_meshcache.c
M	source/blender/modifiers/intern/MOD_remesh.c
M	source/blender/modifiers/intern/MOD_screw.c
M	source/blender/modifiers/intern/MOD_solidify_extrude.c
M	source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
M	source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc
M	source/blender/render/intern/multires_bake.cc

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

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index caf8fba8c03..5b841f0de3c 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -540,7 +540,7 @@ enum {
  * Collection of #MLoopNorSpace basic storage & pre-allocation.
  */
 typedef struct MLoopNorSpaceArray {
-  MLoopNorSpace **lspacearr; /* MLoop aligned array */
+  MLoopNorSpace **lspacearr; /* Face corner aligned array */
   struct LinkNode
       *loops_pool; /* Allocated once, avoids to call BLI_linklist_prepend_arena() for each loop! */
   char data_type;  /* Whether we store loop indices, or pointers to BMLoop. */
@@ -756,12 +756,12 @@ void BKE_mesh_calc_volume(const float (*positions)[3],
                           int mverts_num,
                           const struct MLoopTri *mlooptri,
                           int looptri_num,
-                          const struct MLoop *mloop,
+                          const int *corner_verts,
                           float *r_volume,
                           float r_center[3]);
 
 /**
- * Flip a single MLoop's #MDisps structure,
+ * Flip a single corner's #MDisps structure,
  * low level function to be called from face-flipping code which re-arranged the mdisps themselves.
  */
 void BKE_mesh_mdisp_flip(struct MDisps *md, bool use_loop_mdisp_flip);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index 1cb28e718c5..ccc69d33235 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -1938,7 +1938,7 @@ static void mesh_init_origspace(Mesh *mesh)
   // const int numloop = mesh->totloop;
   const Span<float3> positions = mesh->positions();
   const Span<MPoly> polys = mesh->polys();
-  const Span<MLoop> loops = mesh->loops();
+  const Span<int> corner_verts = mesh->corner_verts();
 
   const MPoly *mp = polys.data();
   int i, j, k;
@@ -1954,20 +1954,21 @@ static void mesh_init_origspace(Mesh *mesh)
       }
     }
     else {
-      const MLoop *l = &loops[mp->loopstart];
       float p_nor[3], co[3];
       float mat[3][3];
 
       float min[2] = {FLT_MAX, FLT_MAX}, max[2] = {-FLT_MAX, -FLT_MAX};
       float translate[2], scale[2];
 
-      BKE_mesh_calc_poly_normal(
-          mp, l, reinterpret_cast<const float(*)[3]>(positions.data()), p_nor);
+      BKE_mesh_calc_poly_normal(mp,
+                                &corner_verts[mp->loopstart],
+                                reinterpret_cast<const float(*)[3]>(positions.data()),
+                                p_nor);
       axis_dominant_v3_to_m3(mat, p_nor);
 
       vcos_2d.resize(mp->totloop);
-      for (j = 0; j < mp->totloop; j++, l++) {
-        mul_v3_m3v3(co, mat, positions[l->v]);
+      for (j = 0; j < mp->totloop; j++) {
+        mul_v3_m3v3(co, mat, positions[corner_verts[mp->totloop + j]]);
         copy_v2_v2(vcos_2d[j], co);
 
         for (k = 0; k < 2; k++) {
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c
index 5cc1da276d5..7ed22399f6f 100644
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.c
@@ -1404,7 +1404,7 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, const b
     int numOfPolys = mesh->totpoly;
     const MEdge *edges = BKE_mesh_edges(mesh);
     const MPoly *polys = BKE_mesh_polys(mesh);
-    const MLoop *loops = BKE_mesh_loops(mesh);
+    const int *corner_verts = BKE_mesh_corner_verts(mesh);
 
     /* count number of edges per vertex */
     for (int i = 0; i < numOfEdges; i++) {
@@ -1419,7 +1419,7 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, const b
      * to locate points on "mesh edge" */
     for (int i = 0; i < numOfPolys; i++) {
       for (int j = 0; j < polys[i].totloop; j++) {
-        temp_data[loops[polys[i].loopstart + j].v]++;
+        temp_data[corner_verts[polys[i].loopstart + j]]++;
       }
     }
 
@@ -1467,7 +1467,7 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, const b
 typedef struct DynamicPaintSetInitColorData {
   const DynamicPaintSurface *surface;
 
-  const MLoop *mloop;
+  const int *corner_verts;
   const MLoopUV *mloopuv;
   const MLoopTri *mlooptri;
   const MLoopCol *mloopcol;
@@ -1484,7 +1484,7 @@ static void dynamic_paint_set_init_color_tex_to_vcol_cb(
   const PaintSurfaceData *sData = data->surface->data;
   PaintPoint *pPoint = (PaintPoint *)sData->type_data;
 
-  const MLoop *mloop = data->mloop;
+  const int *corner_verts = data->corner_verts;
   const MLoopTri *mlooptri = data->mlooptri;
   const MLoopUV *mloopuv = data->mloopuv;
   struct ImagePool *pool = data->pool;
@@ -1496,7 +1496,7 @@ static void dynamic_paint_set_init_color_tex_to_vcol_cb(
 
   for (int j = 3; j--;) {
     TexResult texres = {0};
-    const uint vert = mloop[mlooptri[i].tri[j]].v;
+    const int vert = corner_verts[mlooptri[i].tri[j]];
 
     /* remap to [-1.0, 1.0] */
     uv[0] = mloopuv[mlooptri[i].tri[j]].uv[0] * 2.0f - 1.0f;
@@ -1604,7 +1604,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
   else if (surface->init_color_type == MOD_DPAINT_INITIAL_TEXTURE) {
     Tex *tex = surface->init_texture;
 
-    const MLoop *mloop = BKE_mesh_loops(mesh);
+    const int *corner_verts = BKE_mesh_corner_verts(mesh);
     const MLoopTri *mlooptri = BKE_mesh_runtime_looptri_ensure(mesh);
     const int tottri = BKE_mesh_runtime_looptri_len(mesh);
 
@@ -1628,7 +1628,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
 
       DynamicPaintSetInitColorData data = {
           .surface = surface,
-          .mloop = mloop,
+          .corner_verts = corner_verts,
           .mlooptri = mlooptri,
           .mloopuv = mloopuv,
           .pool = pool,
@@ -1660,7 +1660,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
 
     /* for vertex surface, just copy colors from mcol */
     if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX) {
-      const MLoop *mloop = BKE_mesh_loops(mesh);
+      const int *corner_verts = BKE_mesh_corner_verts(mesh);
       const int totloop = mesh->totloop;
       const MLoopCol *col = CustomData_get_layer_named(
           &mesh->ldata, CD_PROP_BYTE_COLOR, surface->init_layername);
@@ -1669,7 +1669,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
       }
 
       for (int i = 0; i < totloop; i++) {
-        rgba_uchar_to_float(pPoint[mloop[i].v].color, (const uchar *)&col[i].r);
+        rgba_uchar_to_float(pPoint[corner_verts[i]].color, (const uchar *)&col[i].r);
       }
     }
     else if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) {
@@ -1776,7 +1776,7 @@ typedef struct DynamicPaintModifierApplyData {
 
   float (*positions)[3];
   const float (*vert_normals)[3];
-  const MLoop *mloop;
+  const int *corner_verts;
   const MPoly *mpoly;
 
   float (*fcolor)[4];
@@ -1843,7 +1843,7 @@ static void dynamic_paint_apply_surface_vpaint_cb(void *__restrict userdata,
 {
   const DynamicPaintModifierApplyData *data = userdata;
 
-  const MLoop *mloop = data->mloop;
+  const int *corner_verts = data->corner_verts;
   const MPoly *mpoly = data->mpoly;
 
   const DynamicPaintSurface *surface = data->surface;
@@ -1855,7 +1855,7 @@ static void dynamic_paint_apply_surface_vpaint_cb(void *__restrict userdata,
 
   for (int j = 0; j < mpoly[p_index].totloop; j++) {
     const int l_index = mpoly[p_index].loopstart + j;
-    const int v_index = mloop[l_index].v;
+    const int v_index = corner_verts[l_index];
 
     /* save layer data to output layer */
     /* apply color */
@@ -1910,7 +1910,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
 
           /* vertex color paint */
           if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) {
-            const MLoop *mloop = BKE_mesh_loops(result);
+            const int *corner_verts = BKE_mesh_corner_verts(result);
             const int totloop = result->totloop;
             const MPoly *mpoly = BKE_mesh_polys(result);
             const int totpoly = result->totpoly;
@@ -1961,7 +1961,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
             }
 
             data.ob = ob;
-            data.mloop = mloop;
+            data.corner_verts = corner_verts;
             data.mpoly = mpoly;
             data.mloopcol = mloopcol;
             data.mloopcol_wet = mloopcol_wet;
@@ -2183,7 +2183,7 @@ typedef struct DynamicPaintCreateUVSurfaceData {
 
   const MLoopTri *mlooptri;
   const MLoopUV *mloopuv;
-  const MLoop *mloop;
+  const int *corner_verts;
   const int tottri;
 
   const Bounds2D *faceBB;
@@ -2201,7 +2201,7 @@ static void dynamic_paint_create_uv_surface_direct_cb(
 
   const MLoopTri *mlooptri = data->mlooptri;
   const MLoopUV *mloopuv = data->mloopuv;
-  const MLoop *mloop = data->mloop;
+  const int *corner_verts = data->corner_verts;
   const int tottri = data->tottri;
 
   const Bounds2D *faceBB = data->faceBB;
@@ -2273,9 +2273,9 @@ static void dynamic_paint_create_uv_surface_direct_cb(
           tPoint->tri_index = i;
 
           /* save vertex indexes */
-          tPoint->v1 = mloop[mlooptri[i].tri[0]].v;
-          tPoint->v2 = mloop[mlooptri[i].tri[1]].v;
-          tPoint->v3 = mloop[mlooptri[i].tri[2]].v;
+          tPoint->v1 = corner_verts[mlooptri[i].tri[0]];
+          tPoint->v2 = corner_verts[mlooptri[i].tri[1]];
+          tPoint->v3 = corner_verts[mlooptri[i].tri[2]];
 
           sample = 5; /* make sure we exit sample loop as well */
           break;
@@ -2296,7 +2296,7 @@ static void dynamic_paint_create_uv_surface_neighbor_cb(
 
   const MLoopTri *mlooptri = data->mlooptri;
   const MLoopUV *mloopuv = data->mloopuv;
-  const MLoop *mloop = data->mloop;
+  const int *corner_verts = data->corner_verts;
 
   uint32_t *active_points = data->active_points;
 
@@ -2361,9 +2361,9 @@ static void dynamic_paint_create_uv_surface_neighbor_cb(
               }
 
               /* save vertex indexes */
-              tPoint->v1 = mloop[ml

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list