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

Comparing ray/src/rt/raytrace.c (file contents):
Revision 2.83 by greg, Sun Jan 31 18:08:04 2021 UTC vs.
Revision 2.86 by greg, Mon Feb 20 04:05:43 2023 UTC

# Line 217 | Line 217 | raytirrad(                     /* irradiance hack */
217                          raytrans(r);
218                          return(1);
219                  }
220 <                if (!islight(m->otype))
220 >                if (!islight(m->otype)) {
221 >                        setcolor(r->pcol, 1.0, 1.0, 1.0);
222                          return((*ofun[Lamb.otype].funp)(&Lamb, r));
223 +                }
224          }
225          return(0);              /* not a qualifying surface */
226   }
# Line 527 | Line 529 | rayreject(             /* check if candidate hit is worse than cu
529          OBJREC  *mnew, *mray;
530  
531          if ((t <= FTINY) | (t > r->rot + FTINY))
532 <                return 1;
532 >                return(1);
533          if (t < r->rot - FTINY)         /* is new hit significantly closer? */
534 <                return 0;
535 <                                        /* coincident, so decide... */
534 >                return(0);
535 >                                        /* coincident point, so decide... */
536          if (o == r->ro)
537 <                return 1;               /* shouldn't happen */
537 >                return(1);              /* shouldn't happen */
538          if (r->ro == NULL)
539 <                return 0;               /* ditto */
540 <        if ((mnew = findmaterial(o)) == NULL)
541 <                return 1;               /* new has no material */
542 <        if ((mray = findmaterial(r->ro)) == NULL)
543 <                return 0;               /* old has no material(!) */
544 <        if (istransp(mnew->otype))
545 <                return 1;               /* new is transparent */
546 <
547 <        return !istransp(mray->otype);  /* reject unless old is */
539 >                return(0);              /* ditto */
540 >        mnew = findmaterial(o);
541 >        mray = findmaterial(r->ro);     /* check material transparencies */
542 >        if (mnew == NULL) {
543 >                if (mray != NULL)
544 >                        return(1);      /* new has no material */
545 >        } else if (mray == NULL) {
546 >                return(0);              /* old has no material(!) */
547 >        } else if (istransp(mnew->otype)) {
548 >                if (!istransp(mray->otype))
549 >                        return(1);      /* new is transparent */
550 >        } else if (istransp(mray->otype)) {
551 >                return(0);              /* old is transparent */
552 >        }
553 >                        /* weakest priority to later modifier definition */
554 >        return (r->ro->omod >= o->omod);
555   }
556  
557   void

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines