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)) * |
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; |
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; |
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 */ |