diff options
Diffstat (limited to 'source/blender/nodes/composite/nodes/node_composite_image.c')
-rw-r--r-- | source/blender/nodes/composite/nodes/node_composite_image.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index 34f3350c2ff..19e93447608 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -168,14 +168,21 @@ static void cmp_node_image_add_multilayer_outputs(bNodeTree *ntree, bNode *node, NodeImageLayer *sockdata; RenderPass *rpass; int index; + int passflag = 0; for (rpass = rl->passes.first, index = 0; rpass; rpass = rpass->next, ++index) { int type; if (rpass->channels == 1) type = SOCK_FLOAT; else type = SOCK_RGBA; - - sock = nodeAddStaticSocket(ntree, node, SOCK_OUT, type, PROP_NONE, rpass->name, rpass->name); + + /* we only need one socket per type */ + if (passflag & rpass->passtype) + continue; + + passflag |= rpass->passtype; + + sock = nodeAddStaticSocket(ntree, node, SOCK_OUT, type, PROP_NONE, rpass->internal_name, rpass->internal_name); /* extra socket info */ sockdata = MEM_callocN(sizeof(NodeImageLayer), "node image layer"); sock->storage = sockdata; @@ -183,7 +190,7 @@ static void cmp_node_image_add_multilayer_outputs(bNodeTree *ntree, bNode *node, sockdata->pass_index = index; sockdata->pass_flag = rpass->passtype; - if (STREQ(rpass->chan_id, "RGBA")) { + if (rpass->passtype == SCE_PASS_COMBINED) { sock = nodeAddStaticSocket(ntree, node, SOCK_OUT, SOCK_FLOAT, PROP_NONE, "Alpha", "Alpha"); sockdata = MEM_callocN(sizeof(NodeImageLayer), "node image layer"); sock->storage = sockdata; |