[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