[Bf-blender-cvs] [4935ed6ce6b] blender-v2.92-release: Fix T84907: incorrect dirty mask after geometry join node

Jacques Lucke noreply at git.blender.org
Tue Jan 26 12:09:59 CET 2021


Commit: 4935ed6ce6b3e3d8829d6096bd19412d8bbb0de2
Author: Jacques Lucke
Date:   Tue Jan 26 12:09:44 2021 +0100
Branches: blender-v2.92-release
https://developer.blender.org/rB4935ed6ce6b3e3d8829d6096bd19412d8bbb0de2

Fix T84907: incorrect dirty mask after geometry join node

Hans noticed that these dirty flags are only used for normals currently
and that the edge flag is not used at all. This patch still applies the
"entire" fix with all four flags.

Differential Revision: https://developer.blender.org/D10193

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

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

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc
index 75736ae714a..e00ee9b01d8 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc
@@ -43,18 +43,32 @@ static Mesh *join_mesh_topology_and_builtin_attributes(Span<const MeshComponent
   int totedges = 0;
   int totpolys = 0;
 
+  int64_t cd_dirty_vert = 0;
+  int64_t cd_dirty_poly = 0;
+  int64_t cd_dirty_edge = 0;
+  int64_t cd_dirty_loop = 0;
+
   for (const MeshComponent *mesh_component : src_components) {
     const Mesh *mesh = mesh_component->get_for_read();
     totverts += mesh->totvert;
     totloops += mesh->totloop;
     totedges += mesh->totedge;
     totpolys += mesh->totpoly;
+    cd_dirty_vert |= mesh->runtime.cd_dirty_vert;
+    cd_dirty_poly |= mesh->runtime.cd_dirty_poly;
+    cd_dirty_edge |= mesh->runtime.cd_dirty_edge;
+    cd_dirty_loop |= mesh->runtime.cd_dirty_loop;
   }
 
   const Mesh *first_input_mesh = src_components[0]->get_for_read();
   Mesh *new_mesh = BKE_mesh_new_nomain(totverts, totedges, 0, totloops, totpolys);
   BKE_mesh_copy_settings(new_mesh, first_input_mesh);
 
+  new_mesh->runtime.cd_dirty_vert = cd_dirty_vert;
+  new_mesh->runtime.cd_dirty_poly = cd_dirty_poly;
+  new_mesh->runtime.cd_dirty_edge = cd_dirty_edge;
+  new_mesh->runtime.cd_dirty_loop = cd_dirty_loop;
+
   int vert_offset = 0;
   int loop_offset = 0;
   int edge_offset = 0;



More information about the Bf-blender-cvs mailing list