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

Comparing ray/src/rt/m_mirror.c (file contents):
Revision 2.5 by greg, Sat Aug 26 15:15:51 1995 UTC vs.
Revision 2.6 by greg, Fri Sep 15 15:47:29 1995 UTC

# Line 36 | Line 36 | register RAY  *r;
36   {
37          COLOR  mcolor;
38          RAY  nr;
39 +        int  rpure = 1;
40          register int  i;
41                                          /* check arguments */
42          if (m->oargs.nfargs != 3 || m->oargs.nsargs > 1)
# Line 76 | Line 77 | register RAY  *r;
77  
78                  if (rayorigin(&nr, r, REFLECTED, bright(mcolor)) < 0)
79                          return(1);
80 <                pdot = raynormal(pnorm, r);     /* use textures */
81 <                for (i = 0; i < 3; i++)
82 <                        nr.rdir[i] = r->rdir[i] + 2.*pdot*pnorm[i];
80 >                if (DOT(r->pert,r->pert) > FTINY*FTINY) {
81 >                        pdot = raynormal(pnorm, r);     /* use textures */
82 >                        for (i = 0; i < 3; i++)
83 >                                nr.rdir[i] = r->rdir[i] + 2.*pdot*pnorm[i];
84 >                        rpure = 0;
85 >                }
86                                                  /* check for penetration */
87 <                if (DOT(nr.rdir, r->ron) <= FTINY)
87 >                if (rpure || DOT(nr.rdir, r->ron) <= FTINY)
88                          for (i = 0; i < 3; i++)
89                                  nr.rdir[i] = r->rdir[i] + 2.*r->rod*r->ron[i];
90          }
91          rayvalue(&nr);
92          multcolor(nr.rcol, mcolor);
93          addcolor(r->rcol, nr.rcol);
94 +        if (rpure && r->ro != NULL && isflat(r->ro->otype))
95 +                r->rt = r->rot + nr.rt;
96          return(1);
97   }
98  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines