34 |
|
{0, 5, NULL, Lambfa}, NULL, |
35 |
|
}; /* a Lambertian surface */ |
36 |
|
|
37 |
+ |
static int raymove(), checkset(), checkhit(); |
38 |
+ |
|
39 |
|
#define MAXLOOP 128 /* modifier loop detection */ |
40 |
|
|
41 |
|
#define RAYHIT (-1) /* return value for intercepted ray */ |
463 |
|
checkset(oset, cxs); /* eliminate double-checking */ |
464 |
|
for (i = oset[0]; i > 0; i--) { |
465 |
|
o = objptr(oset[i]); |
466 |
+ |
if (o->omod == OVOID && issurface(o->otype)) |
467 |
+ |
continue; /* ignore void surfaces */ |
468 |
|
(*ofun[o->otype].funp)(o, r); |
469 |
|
} |
470 |
|
if (r->ro == NULL) |