--- ray/src/rt/ambcomp.c 1991/06/13 10:54:00 1.6 +++ ray/src/rt/ambcomp.c 1991/06/13 13:58:24 1.8 @@ -86,7 +86,7 @@ RAY *r; rayvalue(&ar); ndims--; addcolor(dp->v, ar.rcol); - if (ar.rt < FHUGE) + if (ar.rt > FTINY && ar.rt < FHUGE) dp->r += 1.0/ar.rt; /* (re)initialize error */ if (dp->n++) { @@ -213,6 +213,14 @@ FVECT pg, dg; else if (arad < minarad) arad = minarad; arad /= sqrt(r->rweight); + if (pg != NULL) { /* clip pos. gradient if too large */ + d = 4.0*DOT(pg,pg)*arad*arad; + if (d > 1.0) { + d = 1.0/sqrt(d); + for (i = 0; i < 3; i++) + pg[i] *= d; + } + } return(arad); oopsy: if (div != NULL)