--- ray/src/rt/m_bsdf.c 2012/09/02 15:33:15 2.22 +++ ray/src/rt/m_bsdf.c 2013/07/04 15:14:45 2.24 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: m_bsdf.c,v 2.22 2012/09/02 15:33:15 greg Exp $"; +static const char RCSid[] = "$Id: m_bsdf.c,v 2.24 2013/07/04 15:14:45 greg Exp $"; #endif /* * Shading for materials with BSDFs taken from XML data files @@ -122,7 +122,9 @@ direct_bsdf_OK(COLOR cval, FVECT ldir, double omega, B return(0); } sf = specjitter * ndp->pr->rweight; - if (25.*tomega <= omega) + if (tomega <= .0) + nsamp = 1; + else if (25.*tomega <= omega) nsamp = 100.*sf + .5; else nsamp = 4.*sf*omega/tomega + .5; @@ -506,6 +508,10 @@ m_bsdf(OBJREC *m, RAY *r) if (mf->fxp != &unitxf) { multv3(upvec, upvec, mf->fxp->xfm); nd.thick *= mf->fxp->sca; + } + if (r->rox != NULL) { + multv3(upvec, upvec, r->rox->f.xfm); + nd.thick *= r->rox->f.sca; } raynormal(nd.pnorm, r); /* compute local BSDF xform */