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

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to