diff options
Diffstat (limited to 'source/blender/nodes')
-rw-r--r-- | source/blender/nodes/NOD_composite.h | 2 | ||||
-rw-r--r-- | source/blender/nodes/NOD_shader.h | 2 | ||||
-rw-r--r-- | source/blender/nodes/composite/nodes/node_composite_common.c | 6 | ||||
-rw-r--r-- | source/blender/nodes/shader/node_shader_tree.c | 7 | ||||
-rw-r--r-- | source/blender/nodes/shader/nodes/node_shader_common.c | 8 |
5 files changed, 22 insertions, 3 deletions
diff --git a/source/blender/nodes/NOD_composite.h b/source/blender/nodes/NOD_composite.h index 1e43b5011e6..85f4c81610b 100644 --- a/source/blender/nodes/NOD_composite.h +++ b/source/blender/nodes/NOD_composite.h @@ -136,4 +136,6 @@ void node_cmp_rlayers_outputs(struct bNodeTree *ntree, struct bNode *node); void node_cmp_rlayers_register_pass(struct bNodeTree *ntree, struct bNode *node, struct Scene *scene, struct ViewLayer *view_layer, const char *name, int type); const char *node_cmp_rlayers_sock_to_pass(int sock_index); +void register_node_type_cmp_custom_group(bNodeType *ntype); + #endif diff --git a/source/blender/nodes/NOD_shader.h b/source/blender/nodes/NOD_shader.h index e88f7a49d30..9e6fa0706d1 100644 --- a/source/blender/nodes/NOD_shader.h +++ b/source/blender/nodes/NOD_shader.h @@ -131,4 +131,6 @@ void register_node_type_sh_tex_checker(void); void register_node_type_sh_bump(void); void register_node_type_sh_tex_ies(void); +void register_node_type_sh_custom_group(bNodeType *ntype); + #endif diff --git a/source/blender/nodes/composite/nodes/node_composite_common.c b/source/blender/nodes/composite/nodes/node_composite_common.c index 9d72335d720..f9a6961c47b 100644 --- a/source/blender/nodes/composite/nodes/node_composite_common.c +++ b/source/blender/nodes/composite/nodes/node_composite_common.c @@ -56,3 +56,9 @@ void register_node_type_cmp_group(void) nodeRegisterType(&ntype); } + +void register_node_type_cmp_custom_group(bNodeType *ntype) +{ + ntype->insert_link = node_insert_link_default; + ntype->update_internal_links = node_update_internal_links_default; +} diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index 50bec047222..a4356dabfc0 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -290,7 +290,7 @@ static bNode *ntree_shader_output_node_from_group(bNodeTree *ntree, int target) /* Search if node groups do not contain valid output nodes (recursively). */ for (bNode *node = ntree->nodes.first; node; node = node->next) { - if (!ELEM(node->type, NODE_GROUP)) { + if (!ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP)) { continue; } if (node->id != NULL) { @@ -453,7 +453,7 @@ static void ntree_shader_groups_expand_inputs(bNodeTree *localtree) for (group_node = localtree->nodes.first; group_node; group_node = group_node->next) { - if (group_node->type != NODE_GROUP || group_node->id == NULL) + if (!(ELEM(group_node->type, NODE_GROUP, NODE_CUSTOM_GROUP)) || group_node->id == NULL) continue; /* Do it recursively. */ @@ -674,7 +674,7 @@ static void ntree_shader_link_builtin_normal(bNodeTree *ntree, /* Don't connect node itself! */ continue; } - if (node->type == NODE_GROUP && node->id) { + if ((ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP)) && node->id) { /* Special re-linking for group nodes. */ ntree_shader_link_builtin_group_normal(ntree, node, @@ -765,6 +765,7 @@ static bool ntree_tag_bsdf_cb(bNode *fromnode, bNode *UNUSED(tonode), void *user switch (fromnode->type) { case NODE_GROUP: + case NODE_CUSTOM_GROUP: /* Recursive */ if (fromnode->id != NULL) { bNodeTree *ntree = (bNodeTree *)fromnode->id; diff --git a/source/blender/nodes/shader/nodes/node_shader_common.c b/source/blender/nodes/shader/nodes/node_shader_common.c index c238a3d946d..0c2b8d939f5 100644 --- a/source/blender/nodes/shader/nodes/node_shader_common.c +++ b/source/blender/nodes/shader/nodes/node_shader_common.c @@ -239,3 +239,11 @@ void register_node_type_sh_group(void) nodeRegisterType(&ntype); } + +void register_node_type_sh_custom_group(bNodeType *ntype) +{ + ntype->insert_link = node_insert_link_default; + ntype->update_internal_links = node_update_internal_links_default; + node_type_exec(ntype, group_initexec, group_freeexec, group_execute); + node_type_gpu(ntype, gpu_group_execute); +} |