--- ray/src/rt/source.c 1989/06/13 10:57:52 1.12 +++ ray/src/rt/source.c 1989/07/19 18:47:01 1.14 @@ -344,16 +344,18 @@ char *p; /* data for f */ } /* sort contributions */ qsort(cntord, nsources, sizeof(CNTPTR), cntcmp); - /* find last */ - sn = 0; ncnts = nsources; - while (sn < ncnts-1) { - register int m; - m = (sn + ncnts) >> 1; - if (cntord[m].brt > 0.0) - sn = m; - else - ncnts = m; - } + { /* find last */ + register int l, m; + + sn = 0; ncnts = l = nsources; + while ((m = (sn + ncnts) >> 1) != l) { + if (cntord[m].brt > 0.0) + sn = m; + else + ncnts = m; + l = m; + } + } /* accumulate tail */ for (sn = ncnts-1; sn > 0; sn--) cntord[sn-1].brt += cntord[sn].brt; @@ -377,10 +379,7 @@ char *p; /* data for f */ if (localhit(&sr, &thescene) && sr.ro != source[cntord[sn].sno].so) { /* check for transmission */ - if (sr.clipset != NULL && inset(sr.clipset,sr.ro->omod)) - raytrans(&sr); /* object is clipped */ - else - rayshade(&sr, sr.ro->omod); + rayshade(&sr, sr.ro->omod); if (bright(sr.rcol) <= FTINY) continue; /* missed! */ (*f)(srccnt[cntord[sn].sno].val, p,