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

Comparing ray/src/common/loadbsdf.c (file contents):
Revision 3.1 by greg, Fri Feb 18 02:41:55 2011 UTC vs.
Revision 3.2 by greg, Sat Feb 19 01:48:59 2011 UTC

# Line 14 | Line 14 | static const char RCSid[] = "$Id$";
14   char *
15   transSDError(SDError ec)
16   {
17        static char     mymess[128];
18
17          if (!SDerrorDetail[0])
18 <                return(strcpy(mymess, SDerrorEnglish[ec]));
19 <        sprintf(mymess, "%s: %s", SDerrorEnglish[ec], SDerrorDetail);
20 <        return(mymess);
18 >                return(strcpy(errmsg, SDerrorEnglish[ec]));
19 >
20 >        sprintf(errmsg, "%s: %s", SDerrorEnglish[ec], SDerrorDetail);
21 >        return(errmsg);
22   }
23  
24   /* Make sure we're not over 100% scattering for this component */
# Line 36 | Line 35 | checkDF(const char *nm, double amt, const SDSpectralDF
35  
36   /* Load a BSDF file and perform some basic checks */
37   SDData *
38 < loadBSDF(char *name)
38 > loadBSDF(char *fname)
39   {
40 <        SDData  *sd = SDgetCache(name);
40 >        SDData  *sd;
41          SDError ec;
42          char    *pname;
43  
44 +        sd = SDgetCache(fname);                 /* look up or allocate */
45          if (sd == NULL)
46                  error(SYSTEM, "out of memory in loadBSDF");
47 <        if (SDisLoaded(sd))
47 >        if (SDisLoaded(sd))                     /* already in memory? */
48                  return(sd);
49 <        
50 <        pname = getpath(name, getrlibpath(), R_OK);
49 >                                                /* else find and load it */
50 >        pname = getpath(fname, getrlibpath(), R_OK);
51          if (pname == NULL) {
52 <                sprintf(errmsg, "cannot find BSDF file \"%s\"", name);
52 >                sprintf(errmsg, "cannot find BSDF file \"%s\"", fname);
53                  error(USER, errmsg);
54          }
55          ec = SDloadFile(sd, pname);
56          if (ec)
57                  error(USER, transSDError(ec));
58                                                  /* simple checks */
59 <        checkDF(name, sd->rLambFront.cieY, sd->rf, "front reflection");
60 <        checkDF(name, sd->rLambBack.cieY, sd->rb, "rear reflection");
61 <        checkDF(name, sd->tLamb.cieY, sd->tf, "transmission");
62 <
59 >        checkDF(sd->name, sd->rLambFront.cieY, sd->rf, "front reflection");
60 >        checkDF(sd->name, sd->rLambBack.cieY, sd->rb, "rear reflection");
61 >        checkDF(sd->name, sd->tLamb.cieY, sd->tf, "transmission");
62 > fprintf(stderr, "Loaded BSDF '%s' (file \"%s\")\n", sd->name, pname);
63 > fprintf(stderr, "Front diffuse reflectance: %.1f%%\n", sd->rLambFront.cieY*100.);
64 > fprintf(stderr, "Back diffuse reflectance: %.1f%%\n", sd->rLambBack.cieY*100.);
65 > fprintf(stderr, "Diffuse transmittance: %.1f%%\n", sd->tLamb.cieY*100.);
66 > if (sd->rf)
67 > fprintf(stderr, "Maximum direct hemispherical front reflection: %.1f%%\n",
68 > sd->rf->maxHemi*100.);
69 > if (sd->rb)
70 > fprintf(stderr, "Maximum direct hemispherical back reflection: %.1f%%\n",
71 > sd->rb->maxHemi*100.);
72 > if (sd->tf)
73 > fprintf(stderr, "Maximum direct hemispherical transmission: %.1f%%\n",
74 > sd->tf->maxHemi*100.);
75          SDretainSet = SDretainAll;              /* keep data in core */
76          return(sd);
77   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines