[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33177] trunk/blender/source/blender/ render/intern/source: bugfix [#24807] nan pixel on Word BG with Angular Map coord texture
Campbell Barton
ideasman42 at gmail.com
Fri Nov 19 11:24:15 CET 2010
Revision: 33177
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33177
Author: campbellbarton
Date: 2010-11-19 11:24:14 +0100 (Fri, 19 Nov 2010)
Log Message:
-----------
bugfix [#24807] nan pixel on Word BG with Angular Map coord texture
also avoid divide by zero with an empty raytree
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/rayshade.c
trunk/blender/source/blender/render/intern/source/texture.c
Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c 2010-11-19 08:37:19 UTC (rev 33176)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c 2010-11-19 10:24:14 UTC (rev 33177)
@@ -468,8 +468,10 @@
max[i] += 0.01f;
sub[i] = max[i]-min[i];
}
- re->maxdist = sqrt( sub[0]*sub[0] + sub[1]*sub[1] + sub[2]*sub[2] );
+ re->maxdist= sub[0]*sub[0] + sub[1]*sub[1] + sub[2]*sub[2];
+ if(re->maxdist > 0.0f) re->maxdist= sqrt(re->maxdist);
+
re->i.infostr= "Raytree finished";
re->stats_draw(re->sdh, &re->i);
}
Modified: trunk/blender/source/blender/render/intern/source/texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/texture.c 2010-11-19 08:37:19 UTC (rev 33176)
+++ trunk/blender/source/blender/render/intern/source/texture.c 2010-11-19 10:24:14 UTC (rev 33177)
@@ -2689,10 +2689,19 @@
case TEXCO_ANGMAP:
/* only works with texture being "real" */
/* use saacos(), fixes bug [#22398], float precission caused lo[2] to be slightly less then -1.0 */
- fact= (1.0/M_PI)*saacos(lo[2])/(sqrt(lo[0]*lo[0] + lo[1]*lo[1]));
- tempvec[0]= lo[0]*fact;
- tempvec[1]= lo[1]*fact;
- tempvec[2]= 0.0;
+ if(lo[0] || lo[1]) { /* check for zero case [#24807] */
+ fact= (1.0/M_PI)*saacos(lo[2])/(sqrt(lo[0]*lo[0] + lo[1]*lo[1]));
+ tempvec[0]= lo[0]*fact;
+ tempvec[1]= lo[1]*fact;
+ tempvec[2]= 0.0;
+ }
+ else {
+ /* this value has no angle, the vector is directly along the view.
+ * avoide divide by zero and use a dummy value. */
+ tempvec[0]= 1.0f;
+ tempvec[1]= 0.0;
+ tempvec[2]= 0.0;
+ }
co= tempvec;
break;
More information about the Bf-blender-cvs
mailing list