371 |
|
return(o->otype==MAT_ILLUM|o->otype==MAT_GLOW);} |
372 |
|
|
373 |
|
#define illumblock(m, r) (!(source[r->rsrc].sflags&SVIRTUAL) && \ |
374 |
+ |
r->rod > 0.0 && \ |
375 |
|
weaksrcmod(source[r->rsrc].so->omod)) |
376 |
|
|
377 |
|
/* wrongsource * |
408 |
|
!(r->crtype&SHADOW || r->rod < 0.0 || \ |
409 |
|
distglow(m, r))) |
410 |
|
|
410 |
– |
/* overcount * |
411 |
– |
* |
412 |
– |
* All overcounting possibilities are contained here. |
413 |
– |
*/ |
414 |
– |
|
415 |
– |
#define overcount(m, r) (badcomponent(m,r) || wrongsource(m,r)) |
416 |
– |
|
411 |
|
/* passillum * |
412 |
|
* |
413 |
|
* An illum passes to another material type when we didn't hit it |
433 |
|
register RAY *r; |
434 |
|
{ |
435 |
|
/* check for over-counting */ |
436 |
< |
if (overcount(m, r)) |
436 |
> |
if (badcomponent(m, r)) |
437 |
> |
return; |
438 |
> |
if (wrongsource(m,r)) |
439 |
|
return; |
440 |
|
/* check for passed illum */ |
441 |
|
if (passillum(m, r)) { |