--- ray/src/rt/aniso.c 1994/12/21 09:51:44 2.28 +++ ray/src/rt/aniso.c 1995/11/22 09:27:51 2.31 @@ -263,8 +263,7 @@ register RAY *r; /* diffuse reflection */ nd.rdiff = 1.0 - nd.trans - nd.rspec; - if (r->ro != NULL && (r->ro->otype == OBJ_FACE || - r->ro->otype == OBJ_RING)) + if (r->ro != NULL && isflat(r->ro->otype)) nd.specfl |= SP_FLAT; getacoords(r, &nd); /* set up coordinates */ @@ -273,7 +272,7 @@ register RAY *r; agaussamp(r, &nd); if (nd.rdiff > FTINY) { /* ambient from this side */ - ambient(ctmp, r); + ambient(ctmp, r, nd.pnorm); if (nd.specfl & SP_RBLT) scalecolor(ctmp, 1.0-nd.trans); else @@ -282,8 +281,13 @@ register RAY *r; addcolor(r->rcol, ctmp); /* add to returned color */ } if (nd.tdiff > FTINY) { /* ambient from other side */ + FVECT bnorm; + flipsurface(r); - ambient(ctmp, r); + bnorm[0] = -nd.pnorm[0]; + bnorm[1] = -nd.pnorm[1]; + bnorm[2] = -nd.pnorm[2]; + ambient(ctmp, r, bnorm); if (nd.specfl & SP_TBLT) scalecolor(ctmp, nd.trans); else