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

Comparing ray/src/rt/srcsupp.c (file contents):
Revision 2.2 by greg, Sat Jan 4 19:54:20 1992 UTC vs.
Revision 2.3 by greg, Wed Jan 15 16:54:50 1992 UTC

# Line 526 | Line 526 | register RAY  *r;
526   #define  wrongsource(m, r)      (r->rsrc>=0 && source[r->rsrc].so!=r->ro && \
527                                  (m->otype!=MAT_ILLUM || wrongillum(m,r)))
528  
529 /* badspecular *
530 *
531 * Any undirected specular ray that hits a light source
532 * should be discarded.  This is because the source contribution to
533 * specular components is calculated separately to reduce variance.
534 */
535
536 #define  badspecular(m, r)      (r->rsrc<0 && r->crtype&SPECULAR)
537
529   /* distglow *
530   *
531   * A distant glow is an object that sometimes acts as a light source,
# Line 544 | Line 535 | register RAY  *r;
535   #define  distglow(m, r)         (m->otype==MAT_GLOW && \
536                                  r->rot > m->oargs.farg[3])
537  
538 < /* badambient *
538 > /* badcomponent *
539   *
540 < * We must avoid including counting light sources in the ambient calculation,
540 > * We must avoid counting light sources in the ambient calculation,
541   * since the direct component is handled separately.  Therefore, any
542   * ambient ray which hits an active light source must be discarded.
543 + * The same is true for stray specular samples, since the specular
544 + * contribution from light sources is calculated separately.
545   */
546  
547 < #define  badambient(m, r)       ((r->crtype&(AMBIENT|SHADOW))==AMBIENT && \
548 <                                !distglow(m, r))
547 > #define  badcomponent(m, r)     (r->crtype&(AMBIENT|SPECULAR) && \
548 >                                !(r->crtype&SHADOW || distglow(m, r)))
549  
550   /* overcount *
551   *
552   * All overcounting possibilities are contained here.
553   */
554  
555 < #define  overcount(m, r)        (badspecular(m,r) || wrongsource(m,r) || \
563 <                                badambient(m,r))
555 > #define  overcount(m, r)        (badcomponent(m,r) || wrongsource(m,r))
556  
557   /* passillum *
558   *

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines