[Bf-blender-cvs] [14427f5aaac] master: Cleanup: Remove unused DerivedMesh normal handling

Hans Goudey noreply at git.blender.org
Mon Jan 31 00:01:13 CET 2022


Commit: 14427f5aaac85d626ce0992eca8a522f0a67f839
Author: Hans Goudey
Date:   Sun Jan 30 17:01:03 2022 -0600
Branches: master
https://developer.blender.org/rB14427f5aaac85d626ce0992eca8a522f0a67f839

Cleanup: Remove unused DerivedMesh normal handling

This function and flags weren't used outside of DerivedMesh
code, and since the plan is to remove the data structure, it makes
sense to remove complexity where possible.

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

M	source/blender/blenkernel/BKE_DerivedMesh.h
M	source/blender/blenkernel/intern/DerivedMesh.cc
M	source/blender/blenkernel/intern/cdderivedmesh.c

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

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 1801c1ee1c9..051fb85def0 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -107,9 +107,6 @@ typedef enum DerivedMeshType {
 typedef enum DMDirtyFlag {
   /* dm has valid tessellated faces, but tessellated CDDATA need to be updated. */
   DM_DIRTY_TESS_CDLAYERS = 1 << 0,
-
-  /* check this with modifier dependsOnNormals callback to see if normals need recalculation */
-  DM_DIRTY_NORMALS = 1 << 1,
 } DMDirtyFlag;
 
 typedef struct DerivedMesh DerivedMesh;
@@ -139,9 +136,6 @@ struct DerivedMesh {
 
   short tangent_mask; /* which tangent layers are calculated */
 
-  /** Calculate vert and face normals */
-  void (*calcNormals)(DerivedMesh *dm);
-
   /** Loop tessellation cache (WARNING! Only call inside threading-protected code!) */
   void (*recalcLoopTri)(DerivedMesh *dm);
   /** accessor functions */
@@ -354,8 +348,6 @@ void DM_copy_vert_data(struct DerivedMesh *source,
  */
 void DM_DupPolys(DerivedMesh *source, DerivedMesh *target);
 
-void DM_ensure_normals(DerivedMesh *dm);
-
 /**
  * Ensure the array is large enough.
  *
diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index d0d19ff199d..4b366a4a1bd 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -464,14 +464,6 @@ void DM_DupPolys(DerivedMesh *source, DerivedMesh *target)
   }
 }
 
-void DM_ensure_normals(DerivedMesh *dm)
-{
-  if (dm->dirty & DM_DIRTY_NORMALS) {
-    dm->calcNormals(dm);
-  }
-  BLI_assert((dm->dirty & DM_DIRTY_NORMALS) == 0);
-}
-
 void DM_ensure_looptri_data(DerivedMesh *dm)
 {
   const unsigned int totpoly = dm->numPolyData;
@@ -524,7 +516,7 @@ void DM_set_only_copy(DerivedMesh *dm, const CustomData_MeshMasks *mask)
    * see replies to r50969, Campbell */
 #if 0
   CustomData_set_only_copy(&dm->loopData, mask->lmask);
-  CustomData_set_only_copy(&dm->polyData, mask->pmask);
+  Custom(&dm->polyData, mask->pmask);
 #endif
 }
 
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index a4f3e84a2bf..04d86e90620 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -265,9 +265,6 @@ static DerivedMesh *cdDM_from_mesh_ex(Mesh *mesh,
   dm->deformedOnly = 1;
   dm->cd_flag = mesh->cd_flag;
 
-  if (mesh->runtime.cd_dirty_vert & CD_MASK_NORMAL) {
-    dm->dirty |= DM_DIRTY_NORMALS;
-  }
   /* TODO: DM_DIRTY_TESS_CDLAYERS ? Maybe not though,
    * since we probably want to switch to looptris? */
 
@@ -282,7 +279,9 @@ static DerivedMesh *cdDM_from_mesh_ex(Mesh *mesh,
   CustomData_merge(&mesh->pdata, &dm->polyData, cddata_masks.pmask, alloctype, mesh->totpoly);
 
   cddm->mvert = CustomData_get_layer(&dm->vertData, CD_MVERT);
-  cddm->vert_normals = CustomData_get_layer(&dm->vertData, CD_NORMAL);
+  /* Though this may be an unnecessary calculation, simply retrieving the layer may return nothing
+   * or dirty normals. */
+  cddm->vert_normals = BKE_mesh_vertex_normals_ensure(mesh);
   cddm->medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE);
   cddm->mloop = CustomData_get_layer(&dm->loopData, CD_MLOOP);
   cddm->mpoly = CustomData_get_layer(&dm->polyData, CD_MPOLY);



More information about the Bf-blender-cvs mailing list