--- ray/src/rt/m_brdf.c 1991/06/17 08:53:58 1.10 +++ ray/src/rt/m_brdf.c 1991/06/28 10:04:02 1.12 @@ -263,9 +263,9 @@ register RAY *r; if (m->otype == MAT_BRTDF && nd.tspec > FTINY) { RAY sr; errno = 0; - setcolor(ctmp, varvalue(m->oargs.sarg[0]), - varvalue(m->oargs.sarg[1]), - varvalue(m->oargs.sarg[2])); + setcolor(ctmp, varvalue(m->oargs.sarg[3]), + varvalue(m->oargs.sarg[4]), + varvalue(m->oargs.sarg[5])); scalecolor(ctmp, nd.tspec); if (errno) objerror(m, WARNING, "compute error"); @@ -293,9 +293,9 @@ register RAY *r; if (m->otype == MAT_BRTDF && nd.rspec > FTINY) { RAY sr; errno = 0; - setcolor(ctmp, varvalue(m->oargs.sarg[3]), - varvalue(m->oargs.sarg[4]), - varvalue(m->oargs.sarg[5])); + setcolor(ctmp, varvalue(m->oargs.sarg[0]), + varvalue(m->oargs.sarg[1]), + varvalue(m->oargs.sarg[2])); scalecolor(ctmp, nd.rspec); if (errno) objerror(m, WARNING, "compute error"); @@ -350,7 +350,8 @@ register BRDFDAT *np; varset("NxP", '=', vec[0]/funcxf.sca); varset("NyP", '=', vec[1]/funcxf.sca); varset("NzP", '=', vec[2]/funcxf.sca); - varset("RdotP", '=', np->pdot); + varset("RdotP", '=', np->pdot <= -1.0 ? -1.0 : + np->pdot >= 1.0 ? 1.0 : np->pdot); varset("CrP", '=', colval(np->mcolor,RED)); varset("CgP", '=', colval(np->mcolor,GRN)); varset("CbP", '=', colval(np->mcolor,BLU));