1 |
|
#ifndef lint |
2 |
< |
static const char RCSid[] = "$Id$"; |
2 |
> |
static const char RCSid[] = "$Id$"; |
3 |
|
#endif |
4 |
|
/* |
5 |
|
* normal.c - shading function for normal materials. |
23 |
|
#define MAXITER 10 /* maximum # specular ray attempts */ |
24 |
|
#endif |
25 |
|
/* estimate of Fresnel function */ |
26 |
< |
#define FRESNE(ci) (exp(-6.0*(ci)) - 0.00247875217) |
26 |
> |
#define FRESNE(ci) (exp(-6.5*(ci)) - 0.00150343919) |
27 |
|
|
28 |
|
static void gaussamp(); |
29 |
|
|
197 |
|
nd.alpha2 = m->oargs.farg[4]; |
198 |
|
if ((nd.alpha2 *= nd.alpha2) <= FTINY) |
199 |
|
nd.specfl |= SP_PURE; |
200 |
– |
if (r->ro != NULL && isflat(r->ro->otype)) |
201 |
– |
nd.specfl |= SP_FLAT; |
200 |
|
|
201 |
< |
if (hastexture = DOT(r->pert,r->pert) > FTINY*FTINY) |
201 |
> |
if (hastexture = (DOT(r->pert,r->pert) > FTINY*FTINY)) { |
202 |
|
nd.pdot = raynormal(nd.pnorm, r); /* perturb normal */ |
203 |
< |
else { |
203 |
> |
} else { |
204 |
|
VCOPY(nd.pnorm, r->ron); |
205 |
|
nd.pdot = r->rod; |
206 |
|
} |
207 |
+ |
if (r->ro != NULL && isflat(r->ro->otype)) |
208 |
+ |
nd.specfl |= SP_FLAT; |
209 |
|
if (nd.pdot < .001) |
210 |
|
nd.pdot = .001; /* non-zero for dirnorm() */ |
211 |
|
multcolor(nd.mcolor, r->pcol); /* modify material color */ |