[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37048] branches/cycles/intern/cycles/ blender/blender_shader.cpp: Cycles: for material/world/lamps, if use_nodes is disabled, show some

Brecht Van Lommel brechtvanlommel at pandora.be
Tue May 31 13:28:04 CEST 2011


Revision: 37048
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37048
Author:   blendix
Date:     2011-05-31 11:28:04 +0000 (Tue, 31 May 2011)
Log Message:
-----------
Cycles: for material/world/lamps, if use_nodes is disabled, show some
default shaders instead of black.

Modified Paths:
--------------
    branches/cycles/intern/cycles/blender/blender_shader.cpp

Modified: branches/cycles/intern/cycles/blender/blender_shader.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_shader.cpp	2011-05-31 11:12:42 UTC (rev 37047)
+++ branches/cycles/intern/cycles/blender/blender_shader.cpp	2011-05-31 11:28:04 UTC (rev 37048)
@@ -535,16 +535,25 @@
 		if(shader_map.sync(&shader, *b_mat)) {
 			ShaderGraph *graph = new ShaderGraph();
 
+			shader->name = b_mat->name();
+
 			/* create nodes */
-			if(b_mat && b_mat->node_tree()) {
-				shader->name = b_mat->name();
-
+			if(b_mat->use_nodes() && b_mat->node_tree()) {
 				PtrSockMap sock_to_node;
 				BL::ShaderNodeTree b_ntree(b_mat->node_tree());
 
 				add_nodes(b_data, graph, b_ntree, NULL, sock_to_node);
 			}
+			else {
+				ShaderNode *closure, *out;
 
+				closure = graph->add(new DiffuseBsdfNode());
+				closure->input("Color")->value = get_float3(b_mat->diffuse_color());
+				out = graph->output();
+
+				graph->connect(closure->output("BSDF"), out->input("Surface"));
+			}
+
 			shader->set_graph(graph);
 			shader->tag_update(scene);
 		}
@@ -565,13 +574,22 @@
 		ShaderGraph *graph = new ShaderGraph();
 
 		/* create nodes */
-		if(b_world && b_world.node_tree()) {
+		if(b_world && b_world.use_nodes() && b_world.node_tree()) {
 			PtrSockMap sock_to_node;
 			BL::ShaderNodeTree b_ntree(b_world.node_tree());
 
 			add_nodes(b_data, graph, b_ntree, NULL, sock_to_node);
 		}
+		else if(b_world) {
+			ShaderNode *closure, *out;
 
+			closure = graph->add(new BackgroundNode());
+			closure->input("Color")->value = get_float3(b_world.horizon_color());
+			out = graph->output();
+
+			graph->connect(closure->output("Background"), out->input("Surface"));
+		}
+
 		shader->set_graph(graph);
 		shader->tag_update(scene);
 	}
@@ -600,7 +618,7 @@
 			ShaderGraph *graph = new ShaderGraph();
 
 			/* create nodes */
-			if(b_lamp && b_lamp->node_tree()) {
+			if(b_lamp->use_nodes() && b_lamp->node_tree()) {
 				shader->name = b_lamp->name();
 
 				PtrSockMap sock_to_node;
@@ -608,7 +626,17 @@
 
 				add_nodes(b_data, graph, b_ntree, NULL, sock_to_node);
 			}
+			else {
+				ShaderNode *closure, *out;
 
+				closure = graph->add(new EmissionNode());
+				closure->input("Color")->value = get_float3(b_lamp->color());
+				closure->input("Strength")->value.x = b_lamp->energy()*10.0f;
+				out = graph->output();
+
+				graph->connect(closure->output("Emission"), out->input("Surface"));
+			}
+
 			shader->set_graph(graph);
 			shader->tag_update(scene);
 		}




More information about the Bf-blender-cvs mailing list