[Bf-blender-cvs] [c59758ca043] refactor-mesh-remove-pointers: Move polys pointer to shrinkwrap code

Hans Goudey noreply at git.blender.org
Thu Sep 1 23:55:17 CEST 2022


Commit: c59758ca043c2da9bb211fc2a38d299e4863d7b6
Author: Hans Goudey
Date:   Thu Sep 1 16:30:30 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBc59758ca043c2da9bb211fc2a38d299e4863d7b6

Move polys pointer to shrinkwrap code

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

M	source/blender/blenkernel/BKE_bvhutils.h
M	source/blender/blenkernel/BKE_shrinkwrap.h
M	source/blender/blenkernel/intern/bvhutils.cc
M	source/blender/blenkernel/intern/shrinkwrap.c

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

diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h
index 1f161fc97a8..d22abd235df 100644
--- a/source/blender/blenkernel/BKE_bvhutils.h
+++ b/source/blender/blenkernel/BKE_bvhutils.h
@@ -57,9 +57,8 @@ typedef struct BVHTreeFromMesh {
   const struct MVert *vert;
   const float (*vert_normals)[3];
   const struct MEdge *edge;
-  const struct MPoly *polys;
-  const struct MLoop *loop;
   const struct MFace *face;
+  const struct MLoop *loop;
   const struct MLoopTri *looptri;
 
   /* Private data */
diff --git a/source/blender/blenkernel/BKE_shrinkwrap.h b/source/blender/blenkernel/BKE_shrinkwrap.h
index b834a067b1c..43a1a850348 100644
--- a/source/blender/blenkernel/BKE_shrinkwrap.h
+++ b/source/blender/blenkernel/BKE_shrinkwrap.h
@@ -31,6 +31,7 @@ struct MDeformVert;
 struct Mesh;
 struct MEdge;
 struct ModifierEvalContext;
+struct MPoly;
 struct Object;
 struct ShrinkwrapGpencilModifierData;
 struct ShrinkwrapModifierData;
@@ -73,6 +74,7 @@ typedef struct ShrinkwrapTreeData {
   BVHTree *bvh;
   BVHTreeFromMesh treeData;
 
+  const struct MPoly *polys;
   const float (*pnors)[3];
   const float (*clnors)[3];
   ShrinkwrapBoundaryData *boundary;
diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc
index ba72a924f6d..d33ff933004 100644
--- a/source/blender/blenkernel/intern/bvhutils.cc
+++ b/source/blender/blenkernel/intern/bvhutils.cc
@@ -574,7 +574,6 @@ static void bvhtree_from_mesh_setup_data(BVHTree *tree,
                                          const BVHCacheType bvh_cache_type,
                                          const MVert *vert,
                                          const MEdge *edge,
-                                         const MPoly *polys,
                                          const MFace *face,
                                          const MLoop *loop,
                                          const MLoopTri *looptri,
@@ -587,9 +586,8 @@ static void bvhtree_from_mesh_setup_data(BVHTree *tree,
 
   r_data->vert = vert;
   r_data->edge = edge;
-  r_data->polys = polys;
-  r_data->loop = loop;
   r_data->face = face;
+  r_data->loop = loop;
   r_data->looptri = looptri;
   r_data->vert_normals = vert_normals;
 
@@ -779,16 +777,8 @@ BVHTree *bvhtree_from_mesh_verts_ex(BVHTreeFromMesh *data,
 
   if (data) {
     /* Setup BVHTreeFromMesh */
-    bvhtree_from_mesh_setup_data(tree,
-                                 BVHTREE_FROM_VERTS,
-                                 vert,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 data);
+    bvhtree_from_mesh_setup_data(
+        tree, BVHTREE_FROM_VERTS, vert, nullptr, nullptr, nullptr, nullptr, nullptr, data);
   }
 
   return tree;
@@ -923,7 +913,7 @@ BVHTree *bvhtree_from_mesh_edges_ex(BVHTreeFromMesh *data,
   if (data) {
     /* Setup BVHTreeFromMesh */
     bvhtree_from_mesh_setup_data(
-        tree, BVHTREE_FROM_EDGES, vert, edge, nullptr, nullptr, nullptr, nullptr, nullptr, data);
+        tree, BVHTREE_FROM_EDGES, vert, edge, nullptr, nullptr, nullptr, nullptr, data);
   }
 
   return tree;
@@ -1137,16 +1127,8 @@ BVHTree *bvhtree_from_mesh_looptri_ex(BVHTreeFromMesh *data,
 
   if (data) {
     /* Setup BVHTreeFromMesh */
-    bvhtree_from_mesh_setup_data(tree,
-                                 BVHTREE_FROM_LOOPTRI,
-                                 vert,
-                                 nullptr,
-                                 nullptr,
-                                 nullptr,
-                                 mloop,
-                                 looptri,
-                                 nullptr,
-                                 data);
+    bvhtree_from_mesh_setup_data(
+        tree, BVHTREE_FROM_LOOPTRI, vert, nullptr, nullptr, mloop, looptri, nullptr, data);
   }
 
   return tree;
@@ -1251,7 +1233,6 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
   }
   const Span<MVert> verts = mesh->vertices();
   const Span<MEdge> edges = mesh->edges();
-  const Span<MPoly> polys = mesh->polygons();
   const Span<MLoop> loops = mesh->loops();
 
   /* Setup BVHTreeFromMesh */
@@ -1259,7 +1240,6 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
                                bvh_cache_type,
                                verts.data(),
                                edges.data(),
-                               polys.data(),
                                (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE),
                                loops.data(),
                                looptri,
diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c
index 16b5513493c..bea2f8f3c4f 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.c
+++ b/source/blender/blenkernel/intern/shrinkwrap.c
@@ -113,6 +113,7 @@ bool BKE_shrinkwrap_init_tree(
   }
 
   data->mesh = mesh;
+  data->polys = BKE_mesh_polygons(mesh);
 
   if (shrinkType == MOD_SHRINKWRAP_NEAREST_VERTEX) {
     data->bvh = BKE_bvhtree_from_mesh_get(&data->treeData, mesh, BVHTREE_FROM_VERTS, 2);
@@ -1179,7 +1180,7 @@ void BKE_shrinkwrap_compute_smooth_normal(const struct ShrinkwrapTreeData *tree,
   const float(*vert_normals)[3] = tree->treeData.vert_normals;
 
   /* Interpolate smooth normals if enabled. */
-  if ((treeData->polys[tri->poly].flag & ME_SMOOTH) != 0) {
+  if ((tree->polys[tri->poly].flag & ME_SMOOTH) != 0) {
     const uint32_t vert_indices[3] = {treeData->loop[tri->tri[0]].v,
                                       treeData->loop[tri->tri[1]].v,
                                       treeData->loop[tri->tri[2]].v};



More information about the Bf-blender-cvs mailing list