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

Comparing ray/src/rt/glass.c (file contents):
Revision 1.10 by greg, Mon Aug 12 08:20:57 1991 UTC vs.
Revision 1.11 by greg, Tue Oct 29 16:30:46 1991 UTC

# Line 49 | Line 49 | register RAY  *r;
49          FVECT  pnorm;
50          double  cos2;
51          COLOR  trans, refl;
52 <        double  d, r1;
52 >        double  d, r1e, r1m;
53          double  transtest, transdist;
54          RAY  p;
55          register int  i;
# Line 73 | Line 73 | register RAY  *r;
73                           pow(colval(mcolor,BLU), 1.0/cos2));
74  
75                                                  /* compute reflection */
76 <        r1 = (pdot - RINDEX*cos2) / (pdot + RINDEX*cos2);
77 <        d = (1.0/pdot - RINDEX/cos2) / (1.0/pdot + RINDEX/cos2);
78 <        r1 = (r1*r1 + d*d) / 2.0;
76 >        r1e = (pdot - RINDEX*cos2) / (pdot + RINDEX*cos2);
77 >        r1e *= r1e;
78 >        r1m = (1.0/pdot - RINDEX/cos2) / (1.0/pdot + RINDEX/cos2);
79 >        r1m *= r1m;
80                                                  /* compute transmittance */
81          for (i = 0; i < 3; i++) {
82                  d = colval(mcolor, i);
83 <                colval(trans,i) = (1.0-r1)*(1.0-r1)*d / (1.0 - r1*r1*d*d);
83 >                colval(trans,i) = .5*(1.0-r1e)*(1.0-r1e)*d/(1.0-r1e*r1e*d*d);
84 >                colval(trans,i) += .5*(1.0-r1m)*(1.0-r1m)*d/(1.0-r1m*r1m*d*d);
85          }
86                                                  /* transmitted ray */
87          if (rayorigin(&p, r, TRANS, bright(trans)) == 0) {
# Line 106 | Line 108 | register RAY  *r;
108          for (i = 0; i < 3; i++) {
109                  d = colval(mcolor, i);
110                  d *= d;
111 <                colval(refl,i) = r1 * (1.0 + (1.0-2.0*r1)*d) / (1.0 - r1*r1*d);
111 >                colval(refl,i) = .5*r1e*(1.0+(1.0-2.0*r1e)*d)/(1.0-r1e*r1e*d);
112 >                colval(refl,i) += .5*r1m*(1.0+(1.0-2.0*r1m)*d)/(1.0-r1m*r1m*d);
113          }
114                                                  /* reflected ray */
115          if (rayorigin(&p, r, REFLECTED, bright(refl)) == 0) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines