From 107e6afd217af53508e3564c5a85add52e978227 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 2 Sep 2013 16:05:51 +0000 Subject: Related to #36632: cycles textured draw mode now shows the image from an image texture node even if it's not active, in case there is no active texture node. --- source/blender/nodes/shader/node_shader_util.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'source/blender/nodes') diff --git a/source/blender/nodes/shader/node_shader_util.c b/source/blender/nodes/shader/node_shader_util.c index f6ecb3e0b72..aed8a0224f1 100644 --- a/source/blender/nodes/shader/node_shader_util.c +++ b/source/blender/nodes/shader/node_shader_util.c @@ -195,25 +195,28 @@ static void data_from_gpu_stack_list(ListBase *sockets, bNodeStack **ns, GPUNode bNode *nodeGetActiveTexture(bNodeTree *ntree) { /* this is the node we texture paint and draw in textured draw */ - bNode *node, *tnode; + bNode *node, *tnode, *inactivenode = NULL; if (!ntree) return NULL; - for (node = ntree->nodes.first; node; node = node->next) + for (node = ntree->nodes.first; node; node = node->next) { if (node->flag & NODE_ACTIVE_TEXTURE) return node; + else if (!inactivenode && node->typeinfo->nclass == NODE_CLASS_TEXTURE) + inactivenode = node; + } /* node active texture node in this tree, look inside groups */ for (node = ntree->nodes.first; node; node = node->next) { if (node->type == NODE_GROUP) { tnode = nodeGetActiveTexture((bNodeTree *)node->id); - if (tnode) + if (tnode && ((tnode->flag & NODE_ACTIVE_TEXTURE) || !inactivenode)) return tnode; } } - return NULL; + return inactivenode; } void ntreeExecGPUNodes(bNodeTreeExec *exec, GPUMaterial *mat, int do_outputs) -- cgit v1.2.3