[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32726] trunk/blender/source/blender/ render/intern/source/rayshade.c: Fix [#23972] 2. 54 beta crashes when rendering scene with many volume objects

Matt Ebb matt at mke3.net
Wed Oct 27 04:18:25 CEST 2010


Revision: 32726
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32726
Author:   broken
Date:     2010-10-27 04:18:24 +0200 (Wed, 27 Oct 2010)

Log Message:
-----------
Fix [#23972] 2.54 beta crashes when rendering scene with many volume objects

Sticky-taped on more hacks to the already crumbling shading system.

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

Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c	2010-10-26 23:52:34 UTC (rev 32725)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c	2010-10-27 02:18:24 UTC (rev 32726)
@@ -718,7 +718,7 @@
 
 		shi.mask= origshi->mask;
 		shi.osatex= origshi->osatex;
-		shi.depth= 1;					/* only used to indicate tracing */
+		shi.depth= origshi->depth + 1;					/* only used to indicate tracing */
 		shi.thread= origshi->thread;
 		//shi.sample= 0; // memset above, so dont need this
 		shi.xs= origshi->xs;
@@ -1458,8 +1458,8 @@
 	float diff[3];
 	int do_tra, do_mir;
 	
-	do_tra= ((shi->mat->mode & MA_TRANSP) && (shi->mat->mode & MA_RAYTRANSP) && shr->alpha!=1.0f);
-	do_mir= ((shi->mat->mode & MA_RAYMIRROR) && shi->ray_mirror!=0.0f);
+	do_tra= ((shi->mat->mode & MA_TRANSP) && (shi->mat->mode & MA_RAYTRANSP) && shr->alpha!=1.0f && (shi->depth <= shi->mat->ray_depth_tra));
+	do_mir= ((shi->mat->mode & MA_RAYMIRROR) && shi->ray_mirror!=0.0f && (shi->depth <= shi->mat->ray_depth));
 	
 	/* raytrace mirror amd refract like to separate the spec color */
 	if(shi->combinedflag & SCE_PASS_SPEC)
@@ -1570,7 +1570,7 @@
 		memset(&shi, 0, sizeof(ShadeInput)); 
 		/* end warning! - Campbell */
 		
-		shi.depth= 1;					/* only used to indicate tracing */
+		shi.depth= origshi->depth + 1;					/* only used to indicate tracing */
 		shi.mask= origshi->mask;
 		shi.thread= origshi->thread;
 		shi.passflag= SCE_PASS_COMBINED;





More information about the Bf-blender-cvs mailing list