[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