Bugfix #7735
authorTon Roosendaal <ton@blender.org>
Mon, 12 Nov 2007 09:37:46 +0000 (09:37 +0000)
committerTon Roosendaal <ton@blender.org>
Mon, 12 Nov 2007 09:37:46 +0000 (09:37 +0000)
Spothalo sometimes gave black pixels. Error was using floating point
32 bits precision checks where double should be used.

(10e-7 vs 10e-16)

source/blender/render/intern/source/shadeoutput.c

index f50028e4c8322d05f4434df274e4adfbd10b4d3b..82feafb96d73d2b82dd1eea83ef482f0532dbbf6 100644 (file)
@@ -26,6 +26,7 @@
  */
 
 #include <stdio.h>
+#include <float.h>
 #include <math.h>
 #include <string.h>
 
@@ -195,7 +196,7 @@ static void spothalo(struct LampRen *lar, ShadeInput *shi, float *intens)
                maxz*= lar->sh_zfac;
                maxy= lar->imat[0][1]*p1[0]+lar->imat[1][1]*p1[1]+lar->imat[2][1]*p1[2];
 
-               if( fabs(nray[2]) <0.000001f ) use_yco= 1;
+               if( fabs(nray[2]) < DBL_EPSILON ) use_yco= 1;
        }
        
        /* scale z to make sure volume is normalized */ 
@@ -210,7 +211,7 @@ static void spothalo(struct LampRen *lar, ShadeInput *shi, float *intens)
        c = npos[0] * npos[0] + npos[1] * npos[1] - npos[2]*npos[2];
 
        snijp= 0;
-       if (fabs(a) < 0.00000001) {
+       if (fabs(a) < DBL_EPSILON) {
                /*
                 * Only one intersection point...
                 */