fixed FP underflow problem in kfact computation
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 9 May 2001 21:36:52 +0000 (21:36 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 9 May 2001 21:36:52 +0000 (21:36 +0000)
progs/demos/ray.c

index 44289b7f96551a137936a91d0d03c3e2e8ab87f4..2173b54fd4d74d8db812621150fb87802ff919e5 100644 (file)
@@ -386,8 +386,7 @@ colorcheckmap(float ppos[3], float c[3])
    h[1] = 0.5f * (vdir[1] + ldir[1]);
    h[2] = 0.5f * (vdir[2] + ldir[2]);
    kfact = dprod(h, norm);
-   kfact =
-      kfact * kfact * kfact * kfact * kfact * kfact * kfact * 7.0f * 255.0f;
+   kfact = pow(kfact, 6.0) * 7.0 * 255.0;
 
    r = r * dfact + kfact;
    g = g * dfact + kfact;
@@ -487,12 +486,10 @@ updatereflectmap(int slot)
            h[1] = 0.5f * (vdir[1] + ldir[1]);
            h[2] = 0.5f * (vdir[2] + ldir[2]);
            kfact = dprod(h, norm);
-           kfact *= kfact;
-           kfact *= kfact;
-           kfact *= kfact;
-           kfact *= kfact;
-           kfact *= 10.0f;
-        }
+            kfact = pow(kfact, 4.0);
+            if (kfact < 1.0e-10)
+               kfact = 0.0;
+         }
 
         r = dfact + kfact;
         g = dfact + kfact;