ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/bsdf.c
(Generate patch)

Comparing ray/src/common/bsdf.c (file contents):
Revision 2.16 by greg, Sat Feb 19 01:48:59 2011 UTC vs.
Revision 2.17 by greg, Sat Feb 19 23:42:09 2011 UTC

# Line 85 | Line 85 | SDloadGeometry(SDData *sd, ezxml_t wdb)
85  
86          if (wdb == NULL)                /* no geometry section? */
87                  return SDEnone;
88        sprintf(SDerrorDetail, "Negative size in \"%s\"", sd->name);
88          sd->dim[0] = sd->dim[1] = sd->dim[2] = .0;
89          if ((geom = ezxml_child(wdb, "Width")) != NULL)
90                  sd->dim[0] = atof(ezxml_txt(geom)) *
# Line 96 | Line 95 | SDloadGeometry(SDData *sd, ezxml_t wdb)
95          if ((geom = ezxml_child(wdb, "Thickness")) != NULL)
96                  sd->dim[2] = atof(ezxml_txt(geom)) *
97                                  to_meters(ezxml_attr(geom, "unit"));
98 <        if ((sd->dim[0] < .0) | (sd->dim[1] < .0) | (sd->dim[2] < .0))
98 >        if ((sd->dim[0] < .0) | (sd->dim[1] < .0) | (sd->dim[2] < .0)) {
99 >                sprintf(SDerrorDetail, "Negative size in \"%s\"", sd->name);
100                  return SDEdata;
101 +        }
102          if ((geom = ezxml_child(wdb, "Geometry")) == NULL ||
103                          (mgfstr = ezxml_txt(geom)) == NULL)
104                  return SDEnone;
# Line 488 | Line 489 | SDsizeBSDF(double *projSA, const FVECT vec, int qflags
489          if ((projSA == NULL) | (vec == NULL) | (sd == NULL))
490                  return SDEargument;
491                                          /* initialize extrema */
492 <        switch (qflags & SDqueryMin+SDqueryMax) {
492 >        switch (qflags) {
493          case SDqueryMax:
494                  projSA[0] = .0;
495                  break;
# Line 518 | Line 519 | SDsizeBSDF(double *projSA, const FVECT vec, int qflags
519                  if (ec)
520                          return ec;
521          }
522 <        return ec;
522 >        if (ec) {                       /* all diffuse? */
523 >                projSA[0] = M_PI;
524 >                if (qflags == SDqueryMin+SDqueryMax)
525 >                        projSA[1] = M_PI;
526 >        }
527 >        return SDEnone;
528   }
529  
530   /* Return BSDF for the given incident and scattered ray vectors */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines