191 |
|
} |
192 |
|
|
193 |
|
|
194 |
< |
m_brdf(m, r) /* color a ray which hit a BRDTF material */ |
194 |
> |
m_brdf(m, r) /* color a ray which hit a BRDTfunc material */ |
195 |
|
register OBJREC *m; |
196 |
|
register RAY *r; |
197 |
|
{ |
291 |
|
if (hasrefl) { |
292 |
|
if (nd.pdot < 0.0) |
293 |
|
flipsurface(r); |
294 |
< |
ambient(ctmp, r); |
294 |
> |
ambient(ctmp, r, nd.pnorm); |
295 |
|
multcolor(ctmp, nd.rdiff); |
296 |
|
addcolor(r->rcol, ctmp); /* add to returned color */ |
297 |
|
if (nd.pdot < 0.0) |
300 |
|
if (hastrans) { /* from other side */ |
301 |
|
if (nd.pdot > 0.0) |
302 |
|
flipsurface(r); |
303 |
< |
ambient(ctmp, r); |
303 |
> |
ambient(ctmp, r, nd.pnorm); |
304 |
|
multcolor(ctmp, nd.tdiff); |
305 |
|
addcolor(r->rcol, ctmp); |
306 |
|
if (nd.pdot > 0.0) |
377 |
|
} |
378 |
|
/* compute ambient */ |
379 |
|
if (nd.trans < 1.0-FTINY) { |
380 |
< |
ambient(ctmp, r); |
380 |
> |
ambient(ctmp, r, nd.pnorm); |
381 |
|
scalecolor(ctmp, 1.0-nd.trans); |
382 |
|
multcolor(ctmp, nd.mcolor); /* modified by material color */ |
383 |
|
addcolor(r->rcol, ctmp); /* add to returned color */ |
384 |
|
} |
385 |
|
if (nd.trans > FTINY) { /* from other side */ |
386 |
|
flipsurface(r); |
387 |
< |
ambient(ctmp, r); |
387 |
> |
ambient(ctmp, r, nd.pnorm); |
388 |
|
scalecolor(ctmp, nd.trans); |
389 |
|
multcolor(ctmp, nd.mcolor); |
390 |
|
addcolor(r->rcol, ctmp); |