--- ray/src/common/bsdf_m.c 2021/03/27 16:40:46 3.40 +++ ray/src/common/bsdf_m.c 2021/12/17 20:51:55 3.44 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: bsdf_m.c,v 3.40 2021/03/27 16:40:46 greg Exp $"; +static const char RCSid[] = "$Id: bsdf_m.c,v 3.44 2021/12/17 20:51:55 greg Exp $"; #endif /* * bsdf_m.c @@ -171,7 +171,7 @@ fo_getndx(const FVECT v, void *p) if (v == NULL) return -1; - if ((v[2] < 0) | (v[2] > 1.)) + if ((v[2] < 0) | (v[2] > 1.00001)) return -1; pol = 180.0/M_PI*Acos(v[2]); azi = 180.0/M_PI*atan2(v[1], v[0]); @@ -709,18 +709,21 @@ SDloadMtx(SDData *sd, ezxml_t wtl) /* separate diffuse components */ sd->rf = extract_diffuse(&sd->rLambFront, sd->rf); sd->rb = extract_diffuse(&sd->rLambBack, sd->rb); - if (sd->tb != NULL) - sd->tb = extract_diffuse(&sd->tLamb, sd->tb); - if (sd->tf != NULL) - sd->tf = extract_diffuse(&sd->tLamb, sd->tf); + sd->tf = extract_diffuse(&sd->tLambFront, sd->tf); + if (sd->tb != NULL) { + sd->tb = extract_diffuse(&sd->tLambBack, sd->tb); + if (sd->tf == NULL) + sd->tLambFront = sd->tLambBack; + } else if (sd->tf != NULL) + sd->tLambBack = sd->tLambFront; /* return success */ return SDEnone; } /* Get Matrix BSDF value */ static int -SDgetMtxBSDF(float coef[SDmaxCh], const FVECT outVec, - const FVECT inVec, SDComponent *sdc) +SDgetMtxBSDF(float coef[SDmaxCh], const FVECT inVec, + const FVECT outVec, SDComponent *sdc) { const SDMat *dp; int i_ndx, o_ndx;