[Bf-blender-cvs] [17b09b509c0] master: Geometry Nodes: Skip calculating normals in transform node

Hans Goudey noreply at git.blender.org
Tue Jun 1 18:04:07 CEST 2021


Commit: 17b09b509c069dad6817e4c123bca50bd0682578
Author: Hans Goudey
Date:   Tue Jun 1 12:03:59 2021 -0400
Branches: master
https://developer.blender.org/rB17b09b509c069dad6817e4c123bca50bd0682578

Geometry Nodes: Skip calculating normals in transform node

This commit skips the eager recalculation of mesh normals in the
transform node. Often another deformation or topology-altering
operation will happen after the transform node, which means the
recalculation was redundant anyway.

In one of my test cases this made the node more than 14x faster.
Though depending on the situation the cost of updating the normals
may just be shifted elsewhere.

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

M	source/blender/nodes/geometry/nodes/node_geo_transform.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_transform.cc b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
index 9714a4f8a80..1ad5dbea492 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_transform.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
@@ -20,6 +20,7 @@
 
 #include "BLI_float4x4.hh"
 
+#include "DNA_mesh_types.h"
 #include "DNA_pointcloud_types.h"
 #include "DNA_volume_types.h"
 
@@ -72,7 +73,8 @@ void transform_mesh(Mesh *mesh,
   else {
     const float4x4 matrix = float4x4::from_loc_eul_scale(translation, rotation, scale);
     BKE_mesh_transform(mesh, matrix.values, false);
-    BKE_mesh_calc_normals(mesh);
+    mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
+    mesh->runtime.cd_dirty_poly |= CD_MASK_NORMAL;
   }
 }
 
@@ -158,7 +160,6 @@ static void transform_curve(CurveEval &curve,
                             const float3 rotation,
                             const float3 scale)
 {
-
   if (use_translate(rotation, scale)) {
     curve.translate(translation);
   }



More information about the Bf-blender-cvs mailing list