12 |
|
#include "platform.h" |
13 |
|
#include "ray.h" |
14 |
|
#include "otypes.h" |
15 |
+ |
#include "otspecial.h" |
16 |
|
#include "resolu.h" |
17 |
|
#include "ambient.h" |
18 |
|
#include "random.h" |
132 |
|
newa *= (newa > 0); |
133 |
|
if (fabs(newa - olda) >= .05*(newa + olda)) { |
134 |
|
ambacc = newa; |
135 |
< |
if (nambvals > 0) |
135 |
> |
if (ambacc > FTINY && nambvals > 0) |
136 |
|
sortambvals(1); /* rebuild tree */ |
137 |
|
} |
138 |
|
} |
416 |
|
VSUM(rtst.rdir, vdif, anorm, t[1]); /* further dist. > plane */ |
417 |
|
rtst.rmax = normalize(rtst.rdir); /* short ray test */ |
418 |
|
while (localhit(&rtst, &thescene)) { /* check for occluder */ |
419 |
< |
if (rtst.ro->omod != OVOID && |
419 |
> |
OBJREC *m = findmaterial(rtst.ro); |
420 |
> |
if (m != NULL && !istransp(m->otype) && !isBSDFproxy(m) && |
421 |
|
(rtst.clipset == NULL || |
422 |
|
!inset(rtst.clipset, rtst.ro->omod))) |
423 |
|
return(1); /* plug light leak */ |