[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14261] trunk/blender/source/blender/ render/intern/source/convertblender.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Mar 27 12:44:37 CET 2008


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





More information about the Bf-blender-cvs mailing list