From b9f2494bfc990fe7269feeb441a3893aceb7569e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 9 May 2001 21:36:52 +0000 Subject: [PATCH] fixed FP underflow problem in kfact computation --- progs/demos/ray.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/progs/demos/ray.c b/progs/demos/ray.c index 44289b7..2173b54 100644 --- a/progs/demos/ray.c +++ b/progs/demos/ray.c @@ -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; -- 2.7.4