1 |
< |
/* Copyright (c) 1986 Regents of the University of California */ |
1 |
> |
/* Copyright (c) 1998 Silicon Graphics, Inc. */ |
2 |
|
|
3 |
|
#ifndef lint |
4 |
< |
static char SCCSid[] = "$SunId$ LBL"; |
4 |
> |
static char SCCSid[] = "$SunId$ SGI"; |
5 |
|
#endif |
6 |
|
|
7 |
|
/* |
73 |
|
double cos1, cos2, nratio; |
74 |
|
COLOR ctrans; |
75 |
|
COLOR talb; |
76 |
– |
double mabsorp; |
76 |
|
double refl, trans; |
77 |
|
FVECT dnorm; |
78 |
|
double d1, d2; |
127 |
|
r->gecc = 0.; |
128 |
|
} |
129 |
|
} |
131 |
– |
/* estimate absorption */ |
132 |
– |
mabsorp = colval(r->cext,RED) < colval(r->cext,GRN) ? |
133 |
– |
colval(r->cext,RED) : colval(r->cext,GRN); |
134 |
– |
if (colval(r->cext,BLU) < mabsorp) mabsorp = colval(r->cext,BLU); |
135 |
– |
if (mabsorp > 0.) |
136 |
– |
mabsorp = exp(-mabsorp*r->rot); /* conservative */ |
137 |
– |
else |
138 |
– |
mabsorp = 1.0; |
130 |
|
|
131 |
|
d2 = 1.0 - nratio*nratio*(1.0 - cos1*cos1); /* compute cos theta2 */ |
132 |
|
|
150 |
|
refl *= 0.5; |
151 |
|
trans = 1.0 - refl; |
152 |
|
|
153 |
< |
if (rayorigin(&p, r, REFRACTED, mabsorp*trans) == 0) { |
153 |
> |
if (rayorigin(&p, r, REFRACTED, trans) == 0) { |
154 |
|
|
155 |
|
/* compute refracted ray */ |
156 |
|
d1 = nratio*cos1 - cos2; |
179 |
|
} |
180 |
|
|
181 |
|
if (!(r->crtype & SHADOW) && |
182 |
< |
rayorigin(&p, r, REFLECTED, mabsorp*refl) == 0) { |
182 |
> |
rayorigin(&p, r, REFLECTED, refl) == 0) { |
183 |
|
|
184 |
|
/* compute reflected ray */ |
185 |
|
for (i = 0; i < 3; i++) |