Revision: 14261
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14261
Author:   blendix
Date:     2008-03-27 12:44:36 +0100 (Thu, 27 Mar 2008)

Log Message:
-----------

Fix for bug #8769: SSS materials were sometimes not rendered with nodes
due to recent bugfix.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c  
2008-03-27 11:10:18 UTC (rev 14260)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c  
2008-03-27 11:44:36 UTC (rev 14261)
@@ -55,6 +55,7 @@
 #include "DNA_meshdata_types.h"
 #include "DNA_meta_types.h"
 #include "DNA_modifier_types.h"
+#include "DNA_node_types.h"
 #include "DNA_object_types.h"
 #include "DNA_object_force.h"
 #include "DNA_object_fluidsim.h"
@@ -986,6 +987,26 @@
        }
 }
 
+static void flag_render_node_material(Render *re, bNodeTree *ntree)
+{
+       bNode *node;
+
+       for(node=ntree->nodes.first; node; node= node->next) {
+               if(node->id) {
+                       if(GS(node->id->name)==ID_MA) {
+                               Material *ma= (Material *)node->id;
+
+                               if(ma->mode & MA_ZTRA)
+                                       re->flag |= R_ZTRA;
+
+                               ma->flag |= MA_IS_USED;
+                       }
+                       else if(node->type==NODE_GROUP)
+                               flag_render_node_material(re, (bNodeTree 
*)node->id);
+               }
+       }
+}
+
 static Material *give_render_material(Render *re, Object *ob, int nr)
 {
        extern Material defmaterial;    /* material.c */
@@ -994,14 +1015,17 @@
        ma= give_current_material(ob, nr);
        if(ma==NULL) 
                ma= &defmaterial;
-       else
-               if(ma->mode & MA_ZTRA)
-                       re->flag |= R_ZTRA;
        
        if(re->r.mode & R_SPEED) ma->texco |= NEED_UV;
        
+       if(ma->mode & MA_ZTRA)
+               re->flag |= R_ZTRA;
+       
        /* for light groups */
        ma->flag |= MA_IS_USED;
+
+       if(ma->nodetree && ma->use_nodes)
+               flag_render_node_material(re, ma->nodetree);
        
        return ma;
 }


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

Reply via email to