112 |
|
/* transmitted ray */ |
113 |
|
if (rayorigin(&p, TRANS, r, trans) == 0) { |
114 |
|
if (!(r->crtype & SHADOW) && hastexture) { |
115 |
< |
for (i = 0; i < 3; i++) /* perturb direction */ |
116 |
< |
p.rdir[i] = r->rdir[i] + |
117 |
< |
2.*(1.-rindex)*r->pert[i]; |
115 |
> |
VSUM(p.rdir, r->rdir, r->pert, 2.*(1.-rindex)); |
116 |
|
if (normalize(p.rdir) == 0.0) { |
117 |
|
objerror(m, WARNING, "bad perturbation"); |
118 |
|
VCOPY(p.rdir, r->rdir); |
141 |
|
} |
142 |
|
/* reflected ray */ |
143 |
|
if (rayorigin(&p, REFLECTED, r, refl) == 0) { |
144 |
< |
for (i = 0; i < 3; i++) |
147 |
< |
p.rdir[i] = r->rdir[i] + 2.0*pdot*pnorm[i]; |
144 |
> |
VSUM(p.rdir, r->rdir, pnorm, 2.*pdot); |
145 |
|
checknorm(p.rdir); |
146 |
|
rayvalue(&p); |
147 |
|
multcolor(p.rcol, p.rcoef); |