1 |
< |
/* Copyright (c) 1993 Regents of the University of California */ |
1 |
> |
/* Copyright (c) 1995 Regents of the University of California */ |
2 |
|
|
3 |
|
#ifndef lint |
4 |
|
static char SCCSid[] = "$SunId$ LBL"; |
405 |
|
* (Glows with negative radii should NEVER participate in illumination.) |
406 |
|
*/ |
407 |
|
|
408 |
< |
#define distglow(m, r) (m->otype==MAT_GLOW && \ |
408 |
> |
#define distglow(m, r, d) (m->otype==MAT_GLOW && \ |
409 |
|
m->oargs.farg[3] >= -FTINY && \ |
410 |
< |
r->rot > m->oargs.farg[3]) |
410 |
> |
d > m->oargs.farg[3]) |
411 |
|
|
412 |
|
/* badcomponent * |
413 |
|
* |
420 |
|
|
421 |
|
#define badcomponent(m, r) (r->crtype&(AMBIENT|SPECULAR) && \ |
422 |
|
!(r->crtype&SHADOW || r->rod < 0.0 || \ |
423 |
< |
distglow(m, r))) |
423 |
> |
/* not 100% correct */ distglow(m, r, r->rot))) |
424 |
|
|
425 |
|
/* passillum * |
426 |
|
* |
438 |
|
* The -dv flag is normally on for sources to be visible. |
439 |
|
*/ |
440 |
|
|
441 |
< |
#define srcignore(m, r) (!directvis && !(r->crtype&SHADOW) && \ |
442 |
< |
!distglow(m, r)) |
441 |
> |
#define srcignore(m, r) !(directvis || r->crtype&SHADOW || \ |
442 |
> |
distglow(m, r, raydist(r,PRIMARY))) |
443 |
|
|
444 |
|
|
445 |
|
m_light(m, r) /* ray hit a light source */ |
449 |
|
/* check for over-counting */ |
450 |
|
if (badcomponent(m, r)) |
451 |
|
return(1); |
452 |
< |
if (wrongsource(m,r)) |
452 |
> |
if (wrongsource(m, r)) |
453 |
|
return(1); |
454 |
|
/* check for passed illum */ |
455 |
|
if (passillum(m, r)) { |