[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