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.84 by greg, Sun Jan 31 20:55: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 535 | Line 537 | rayreject(             /* check if candidate hit is worse than cu
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)
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 <        if (istransp(mnew->otype))
548 <                return(1);              /* new is transparent */
549 <        if (istransp(mray->otype))
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   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines