[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32349] trunk/blender/source/blender/ render/intern/source/rayshade.c: minor edits so traceray() uses less stack memory, also remove memset() usage, initialize as {0}.

Campbell Barton ideasman42 at gmail.com
Wed Oct 6 16:47:40 CEST 2010


Revision: 32349
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32349
Author:   campbellbarton
Date:     2010-10-06 16:47:40 +0200 (Wed, 06 Oct 2010)

Log Message:
-----------
minor edits so traceray() uses less stack memory, also remove memset() usage, initialize as {0}.
no functional change.

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-06 14:17:28 UTC (rev 32348)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c	2010-10-06 14:47:40 UTC (rev 32349)
@@ -697,17 +697,9 @@
  * note: 'col' must be initialized */
 static void traceray(ShadeInput *origshi, ShadeResult *origshr, short depth, float *start, float *vec, float *col, ObjectInstanceRen *obi, VlakRen *vlr, int traflag)
 {
-	ShadeInput shi;
-	ShadeResult shr;
+	ShadeInput shi= {0};
 	Isect isec;
-	float f, f1, fr, fg, fb;
-	float ref[3];
 	float dist_mir = origshi->mat->dist_mir;
-
-	/* Warning, This is not that nice, and possibly a bit slow for every ray,
-	however some variables were not initialized properly in, unless using shade_input_initialize(...), we need to do a memset */
-	memset(&shi, 0, sizeof(ShadeInput)); 
-	/* end warning! - Campbell */
 	
 	VECCOPY(isec.start, start);
 	VECCOPY(isec.vec, vec );
@@ -721,8 +713,9 @@
 	RE_RC_INIT(isec, shi);
 
 	if(RE_rayobject_raycast(R.raytree, &isec)) {
+		ShadeResult shr= {{0}};
 		float d= 1.0f;
-		
+
 		shi.mask= origshi->mask;
 		shi.osatex= origshi->osatex;
 		shi.depth= 1;					/* only used to indicate tracing */
@@ -737,16 +730,15 @@
 		shi.light_override= origshi->light_override;
 		shi.mat_override= origshi->mat_override;
 		
-		memset(&shr, 0, sizeof(ShadeResult));
-		
 		shade_ray(&isec, &shi, &shr);
 		if (traflag & RAY_TRA)
 			d= shade_by_transmission(&isec, &shi, &shr);
 		
 		if(depth>0) {
+			float fr, fg, fb, f, f1;
 
 			if((shi.mat->mode_l & MA_TRANSP) && shr.alpha < 1.0f) {
-				float nf, f, f1, refract[3], tracol[4];
+				float nf, f, refract[3], tracol[4];
 				
 				tracol[0]= shi.r;
 				tracol[1]= shi.g;
@@ -799,6 +791,7 @@
 			
 			if(f!=0.0f) {
 				float mircol[4];
+				float ref[3];
 				
 				reflection(ref, shi.vn, shi.view, NULL);			
 				traceray(origshi, origshr, depth-1, shi.co, ref, mircol, shi.obi, shi.vlr, 0);





More information about the Bf-blender-cvs mailing list