| 39 |
|
/* check for intersection */ |
| 40 |
|
while (localhit(&rt, &thescene)) { |
| 41 |
|
RAY rt1 = rt; /* pretend we were aimed at source */ |
| 42 |
< |
rt1.crtype |= rt1.rtype = SHADOW; |
| 42 |
> |
rt1.crtype |= rt1.rtype = RSHADOW; |
| 43 |
|
rt1.rdir[0] = -rt.rdir[0]; |
| 44 |
|
rt1.rdir[1] = -rt.rdir[1]; |
| 45 |
|
rt1.rdir[2] = -rt.rdir[2]; |
| 51 |
|
if (srcblocker(&rt1)) |
| 52 |
|
return(1); |
| 53 |
|
/* move past failed blocker */ |
| 54 |
< |
VSUM(rt.rorg, rt.rop, rt.rdir, FTINY); |
| 54 |
> |
VSUM(rt.rorg, rt.rop, rt.rdir, 10.*FTINY); |
| 55 |
|
rayclear(&rt); /* & try again... */ |
| 56 |
|
} |
| 57 |
|
return(0); /* found no blockers */ |
| 309 |
|
m = findmaterial(r->ro); |
| 310 |
|
if (m == NULL) |
| 311 |
|
return(0); /* no material?! */ |
| 312 |
< |
if (!isopaque(m->otype)) |
| 312 |
> |
if (!isopaque(m)) |
| 313 |
|
return(0); /* material not a reliable blocker */ |
| 314 |
|
*srcobstructp(r) = r->robj; /* else record obstructor */ |
| 315 |
|
return(1); |