[Bf-blender-cvs] [90e6323ed85] master: Cycles: auto insert emission node when linking color to closure.

Brecht Van Lommel noreply at git.blender.org
Wed Jun 13 19:23:17 CEST 2018


Commit: 90e6323ed8575fa406ece8903b9ceca603737d83
Author: Brecht Van Lommel
Date:   Wed Jun 13 16:29:06 2018 +0200
Branches: master
https://developer.blender.org/rB90e6323ed8575fa406ece8903b9ceca603737d83

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.

===================================================================

M	intern/cycles/render/graph.cpp

===================================================================

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);



More information about the Bf-blender-cvs mailing list