ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/source.c
(Generate patch)

Comparing ray/src/rt/source.c (file contents):
Revision 2.12 by greg, Wed Aug 18 00:19:05 1993 UTC vs.
Revision 2.13 by greg, Tue Dec 21 15:46:19 1993 UTC

# Line 299 | Line 299 | char  *p;                      /* data for f */
299                                                  /* modify threshold */
300          ourthresh = shadthresh / r->rweight;
301                                                  /* test for shadows */
302 <        nhits = 0;
303 <        for (sn = 0; sn < ncnts; sn++) {
302 >        for (nhits = 0, hwt = 0.0, sn = 0; sn < ncnts;
303 >                        hwt += (double)source[scp->sno].nhits /
304 >                                (double)source[scp->sno].ntests,
305 >                        sn++) {
306                                                  /* check threshold */
307                  if ((sn+nshadcheck>=ncnts ? cntord[sn].brt :
308                                  cntord[sn].brt-cntord[sn+nshadcheck].brt)
# Line 329 | Line 331 | char  *p;                      /* data for f */
331                  nhits++;
332                  source[scp->sno].nhits++;
333          }
334 <                                        /* surface hit rate */
335 <        if (sn > 0)
336 <                hwt = (double)nhits / (double)sn;
334 >                                        /* source hit rate */
335 >        if (hwt > FTINY)
336 >                hwt = (double)nhits / hwt;
337          else
338                  hwt = 0.5;
339   #ifdef DEBUG
340 <        sprintf(errmsg, "%d tested, %d untested, %f hit rate\n",
340 >        sprintf(errmsg, "%d tested, %d untested, %f conditional hit rate\n",
341                          sn, ncnts-sn, hwt);
342          eputs(errmsg);
343   #endif
# Line 344 | Line 346 | char  *p;                      /* data for f */
346                  scp = srccnt + cntord[sn].sndx;
347                  prob = hwt * (double)source[scp->sno].nhits /
348                                  (double)source[scp->sno].ntests;
349 +                if (prob > 1.0)
350 +                        prob = 1.0;
351                  scalecolor(scp->val, prob);
352                  addcolor(r->rcol, scp->val);
353          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines