Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-01-26 14:09:44 +0300
committerJacques Lucke <jacques@blender.org>2021-01-26 14:09:44 +0300
commit4935ed6ce6b3e3d8829d6096bd19412d8bbb0de2 (patch)
treeabe2ec99797a6c73c21809544f86aa9efe3a5b78 /source/blender/nodes
parentdc8b31af578bfcf9f77dbce6d7b7da1006a3c8c1 (diff)
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
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc14
1 files changed, 14 insertions, 0 deletions
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;