--- ray/src/common/bsdf_t.c 2014/03/17 01:53:51 3.32 +++ ray/src/common/bsdf_t.c 2014/03/23 19:24:11 3.34 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: bsdf_t.c,v 3.32 2014/03/17 01:53:51 greg Exp $"; +static const char RCSid[] = "$Id: bsdf_t.c,v 3.34 2014/03/23 19:24:11 greg Exp $"; #endif /* * bsdf_t.c @@ -804,10 +804,9 @@ SDsampTreCDist(FVECT ioVec, double randX, const SDCDst /* emit from back? */ if ((cd->sidef == SD_BREFL) | (cd->sidef == SD_FXMIT)) gpos[2] = -gpos[2]; - if (cd->isodist) { /* rotate isotropic result */ + if (cd->isodist) { /* rotate isotropic sample */ rotangle = atan2(-ioVec[1],-ioVec[0]); - VCOPY(ioVec, gpos); - spinvector(ioVec, ioVec, zvec, rotangle); + spinvector(ioVec, gpos, zvec, rotangle); } else VCOPY(ioVec, gpos); return SDEnone; @@ -849,7 +848,8 @@ load_values(char **spp, float *va, int n) char *svnext; while (n-- > 0 && (svnext = fskip(*spp)) != NULL) { - *v++ = atof(*spp); + if ((*v++ = atof(*spp)) < 0) + v[-1] = 0; *spp = svnext; eat_token(spp, ','); }