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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-06-13 17:29:06 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-06-13 19:39:30 +0300
commit90e6323ed8575fa406ece8903b9ceca603737d83 (patch)
tree6acdf97aa58d259ce2c8d5adb264e2a58f016cdd /intern
parent57cd52a4abbad02b314d8dabf7c77d96e9dcfe74 (diff)
Cycles: auto insert emission node when linking color to closure.
This is convenient for previewing the output of a node, and we agreed to support this behavior in both Eevee and Cycles.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/render/graph.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp
index 59e1a12c3a1..dca168824d9 100644
--- a/intern/cycles/render/graph.cpp
+++ b/intern/cycles/render/graph.cpp
@@ -232,8 +232,8 @@ void ShaderGraph::connect(ShaderOutput *from, ShaderInput *to)
}
if(from->type() != to->type()) {
- /* for closures we can't do automatic conversion */
- if(from->type() == SocketType::CLOSURE || to->type() == SocketType::CLOSURE) {
+ /* can't do automatic conversion from closure */
+ if(from->type() == SocketType::CLOSURE) {
fprintf(stderr, "Cycles shader graph connect: can only connect closure to closure "
"(%s.%s to %s.%s).\n",
from->parent->name.c_str(), from->name().c_str(),
@@ -242,7 +242,17 @@ void ShaderGraph::connect(ShaderOutput *from, ShaderInput *to)
}
/* add automatic conversion node in case of type mismatch */
- ShaderNode *convert = add(new ConvertNode(from->type(), to->type(), true));
+ ShaderNode *convert;
+
+ if (to->type() == SocketType::CLOSURE) {
+ EmissionNode *emission = new EmissionNode();
+ emission->color = make_float3(1.0f, 1.0f, 1.0f);
+ emission->strength = 1.0f;
+ convert = add(emission);
+ }
+ else {
+ convert = add(new ConvertNode(from->type(), to->type(), true));
+ }
connect(from, convert->inputs[0]);
connect(convert->outputs[0], to);