77 |
|
} BRDFDAT; /* BRDF material data */ |
78 |
|
|
79 |
|
|
80 |
< |
static srcdirf_t dirbrdf; |
81 |
< |
static int setbrdfunc(BRDFDAT *np); |
80 |
> |
static int setbrdfunc(BRDFDAT *np); |
81 |
|
|
82 |
|
|
83 |
|
static void |
88 |
|
double omega /* light source size */ |
89 |
|
) |
90 |
|
{ |
91 |
< |
register BRDFDAT *np = nnp; |
91 |
> |
BRDFDAT *np = nnp; |
92 |
|
double ldot; |
93 |
|
double dtmp; |
94 |
|
COLOR ctmp; |
95 |
|
FVECT ldx; |
96 |
|
static double vldx[5], pt[MAXDIM]; |
97 |
< |
register char **sa; |
98 |
< |
register int i; |
97 |
> |
char **sa; |
98 |
> |
int i; |
99 |
|
#define lddx (vldx+1) |
100 |
|
|
101 |
|
setcolor(cval, 0.0, 0.0, 0.0); |
196 |
|
} |
197 |
|
|
198 |
|
|
199 |
< |
extern int |
199 |
> |
int |
200 |
|
m_brdf( /* color a ray that hit a BRDTfunc material */ |
201 |
< |
register OBJREC *m, |
202 |
< |
register RAY *r |
201 |
> |
OBJREC *m, |
202 |
> |
RAY *r |
203 |
|
) |
204 |
|
{ |
205 |
|
int hitfront = 1; |
212 |
|
COLOR ctmp; |
213 |
|
FVECT vtmp; |
214 |
|
double d; |
215 |
< |
register MFUNC *mf; |
216 |
< |
register int i; |
215 |
> |
MFUNC *mf; |
216 |
> |
int i; |
217 |
|
/* check arguments */ |
218 |
|
if ((m->oargs.nsargs < 10) | (m->oargs.nfargs < 9)) |
219 |
|
objerror(m, USER, "bad # arguments"); |
270 |
|
objerror(m, WARNING, "compute error"); |
271 |
|
else if (rayorigin(&sr, TRANS, r, ctmp) == 0) { |
272 |
|
if (!(r->crtype & SHADOW) && hastexture) { |
273 |
< |
for (i = 0; i < 3; i++) /* perturb direction */ |
274 |
< |
sr.rdir[i] = r->rdir[i] - .75*r->pert[i]; |
273 |
> |
/* perturb direction */ |
274 |
> |
VSUM(sr.rdir, r->rdir, r->pert, -.75); |
275 |
|
if (normalize(sr.rdir) == 0.0) { |
276 |
|
objerror(m, WARNING, "illegal perturbation"); |
277 |
|
VCOPY(sr.rdir, r->rdir); |
298 |
|
if ((errno == EDOM) | (errno == ERANGE)) |
299 |
|
objerror(m, WARNING, "compute error"); |
300 |
|
else if (rayorigin(&sr, REFLECTED, r, ctmp) == 0) { |
301 |
< |
for (i = 0; i < 3; i++) |
303 |
< |
sr.rdir[i] = r->rdir[i] + 2.0*nd.pdot*nd.pnorm[i]; |
301 |
> |
VSUM(sr.rdir, r->rdir, nd.pnorm, 2.*nd.pdot); |
302 |
|
checknorm(sr.rdir); |
303 |
|
rayvalue(&sr); |
304 |
|
multcolor(sr.rcol, sr.rcoef); |
344 |
|
|
345 |
|
|
346 |
|
|
347 |
< |
extern int |
347 |
> |
int |
348 |
|
m_brdf2( /* color a ray that hit a BRDF material */ |
349 |
< |
register OBJREC *m, |
350 |
< |
register RAY *r |
349 |
> |
OBJREC *m, |
350 |
> |
RAY *r |
351 |
|
) |
352 |
|
{ |
353 |
|
BRDFDAT nd; |
433 |
|
|
434 |
|
static int |
435 |
|
setbrdfunc( /* set up brdf function and variables */ |
436 |
< |
register BRDFDAT *np |
436 |
> |
BRDFDAT *np |
437 |
|
) |
438 |
|
{ |
439 |
|
FVECT vec; |