From 672c16321bb4d8d425ce79eafb7b6a585e8f9bf6 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 14 Sep 2023 10:24:29 +0200 Subject: [PATCH 1/3] Fix #112335: particle instance modifier outputs wrong attributes This was caused by a mistake in 16fbadde36. --- source/blender/modifiers/intern/MOD_particleinstance.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/modifiers/intern/MOD_particleinstance.cc b/source/blender/modifiers/intern/MOD_particleinstance.cc index cdae7dda5ee..b18de656764 100644 --- a/source/blender/modifiers/intern/MOD_particleinstance.cc +++ b/source/blender/modifiers/intern/MOD_particleinstance.cc @@ -494,7 +494,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * for (; j; j--, orig_corner_i++, dst_corner_i++) { corner_verts[dst_corner_i] = orig_corner_verts[orig_corner_i] + (p_skip * totvert); corner_edges[dst_corner_i] = orig_corner_edges[orig_corner_i] + (p_skip * totedge); - const int vert = corner_verts[orig_corner_i]; + const int vert = corner_verts[dst_corner_i]; if (mloopcols_index != nullptr) { const int part_index = vert_part_index[vert]; store_float_in_vcol(&mloopcols_index[dst_corner_i], -- 2.30.2 From 9464eb1682ccfe6cf99d9afdd370209cbfe789ba Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 14 Sep 2023 11:26:25 +0200 Subject: [PATCH 2/3] Fix #111166: crash when enabling render pass with equally named AOV There were two issues: * The check for conflicting AOVs was done after the Render Layer node was updated. This led to an unexpected state in the node. * The check for conflicting AOVs did not work, because AOVs that already had the conflict-flag set were ignored. --- source/blender/blenkernel/intern/layer.cc | 4 ++++ source/blender/makesrna/intern/rna_scene.c | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/layer.cc b/source/blender/blenkernel/intern/layer.cc index bc3f2587178..38f3dcad156 100644 --- a/source/blender/blenkernel/intern/layer.cc +++ b/source/blender/blenkernel/intern/layer.cc @@ -2577,6 +2577,10 @@ void BKE_view_layer_verify_aov(RenderEngine *engine, Scene *scene, ViewLayer *vi viewlayer_aov_make_name_unique(view_layer); GHash *name_count = BLI_ghash_str_new(__func__); + LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) { + /* Disable conflict flag, so that the AOV is included when iterating over all passes below. */ + aov->flag &= ~AOV_CONFLICT; + } RE_engine_update_render_passes( engine, scene, view_layer, bke_view_layer_verify_aov_cb, name_count); LISTBASE_FOREACH (ViewLayerAOV *, aov, &view_layer->aovs) { diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 90520797f75..488d90dbb91 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1828,11 +1828,8 @@ void rna_ViewLayer_pass_update(Main *bmain, Scene *activescene, PointerRNA *ptr) { Scene *scene = (Scene *)ptr->owner_id; - if (scene->nodetree) { - ntreeCompositUpdateRLayers(scene->nodetree); - } - ViewLayer *view_layer = NULL; + if (ptr->type == &RNA_ViewLayer) { view_layer = (ViewLayer *)ptr->data; } @@ -1857,6 +1854,10 @@ void rna_ViewLayer_pass_update(Main *bmain, Scene *activescene, PointerRNA *ptr) } } + if (scene->nodetree) { + ntreeCompositUpdateRLayers(scene->nodetree); + } + rna_Scene_render_update(bmain, activescene, ptr); } -- 2.30.2 From c0102633713dc986dfa50171ac6afa23955a9d41 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 14 Sep 2023 11:51:05 +0200 Subject: [PATCH 3/3] Fix #111411: crash with group node that references linked-but-not-found group These group nodes currently don't have a socket declaration for every socket. Instead we just don't touch the sockets at all so that things have not changed when the node group is found again. --- source/blender/editors/space_node/drawnode.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc index 78860a290d4..d3b9444bb4e 100644 --- a/source/blender/editors/space_node/drawnode.cc +++ b/source/blender/editors/space_node/drawnode.cc @@ -1271,14 +1271,18 @@ static void node_file_output_socket_draw(bContext *C, static bool socket_needs_attribute_search(bNode &node, bNodeSocket &socket) { - if (node.runtime->declaration == nullptr) { + const nodes::NodeDeclaration *node_decl = node.declaration(); + if (node_decl == nullptr) { + return false; + } + if (node_decl->skip_updating_sockets) { return false; } if (socket.in_out == SOCK_OUT) { return false; } const int socket_index = BLI_findindex(&node.inputs, &socket); - return node.declaration()->inputs[socket_index]->is_attribute_name; + return node_decl->inputs[socket_index]->is_attribute_name; } static void std_node_socket_draw( -- 2.30.2