105 |
|
raycont(r) /* check for clipped object and continue */ |
106 |
|
register RAY *r; |
107 |
|
{ |
108 |
< |
if (r->clipset != NULL && inset(r->clipset, r->ro->omod)) |
108 |
> |
if ((r->clipset != NULL && inset(r->clipset, r->ro->omod)) || |
109 |
> |
r->ro->omod == OVOID) |
110 |
|
raytrans(r); |
111 |
|
else |
112 |
|
rayshade(r, r->ro->omod); |
331 |
|
sflags = 0; |
332 |
|
for (i = 0; i < 3; i++) { |
333 |
|
curpos[i] = r->rorg[i]; |
334 |
< |
if (r->rdir[i] > FTINY) |
334 |
> |
if (r->rdir[i] > 1e-7) |
335 |
|
sflags |= 1 << i; |
336 |
< |
else if (r->rdir[i] < -FTINY) |
336 |
> |
else if (r->rdir[i] < -1e-7) |
337 |
|
sflags |= 0x10 << i; |
338 |
|
} |
339 |
|
if (sflags == 0) |
464 |
|
checkset(oset, cxs); /* eliminate double-checking */ |
465 |
|
for (i = oset[0]; i > 0; i--) { |
466 |
|
o = objptr(oset[i]); |
466 |
– |
if (o->omod == OVOID && issurface(o->otype)) |
467 |
– |
continue; /* ignore void surfaces */ |
467 |
|
(*ofun[o->otype].funp)(o, r); |
468 |
|
} |
469 |
|
if (r->ro == NULL) |