510 |
|
} |
511 |
|
if ((m->oargs.nsargs < 13) | (m->oargs.nfargs < 9)) |
512 |
|
objerror(m, USER, "bad number of arguments"); |
513 |
+ |
|
514 |
+ |
if (r->crtype & SHADOW && !strcmp(m->oargs.sarg[5], "0")) |
515 |
+ |
return(1); /* first shadow test */ |
516 |
|
clr_comps(&wd); |
517 |
|
wd.rp = r; |
518 |
|
wd.mtp = m; |
519 |
|
wd.mf = getfunc(m, 12, 0xEEE, 1); |
520 |
+ |
set_dcomp(&wd, 0); /* calls main modifier */ |
521 |
|
setfunc(m, r); /* get local u vector */ |
522 |
|
errno = 0; |
523 |
|
for (i = 0; i < 3; i++) |
527 |
|
else if (wd.mf->fxp != &unitxf) |
528 |
|
multv3(wd.ulocal, wd.ulocal, wd.mf->fxp->xfm); |
529 |
|
|
526 |
– |
set_dcomp(&wd, 0); /* call this first */ |
527 |
– |
set_dcomp(&wd, 1); /* call this second */ |
530 |
|
set_scomp(&wd, 1); /* sets SP_TPURE */ |
531 |
|
if (r->crtype & SHADOW && !(wd.specfl & SP_TPURE)) |
532 |
< |
return(1); /* early shadow test */ |
532 |
> |
return(1); /* second shadow test */ |
533 |
> |
set_dcomp(&wd, 1); |
534 |
|
set_scomp(&wd, 0); |
535 |
|
wd.specfl |= SP_FLAT*(r->ro != NULL && isflat(r->ro->otype)); |
536 |
|
/* apply Fresnel adjustments? */ |