| 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)) { |