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

Comparing ray/src/common/bsdf.h (file contents):
Revision 2.12 by greg, Sun Apr 24 19:39:21 2011 UTC vs.
Revision 2.19 by greg, Sun Sep 2 15:33:15 2012 UTC

# Line 14 | Line 14
14   *      in the +Z direction, towards the interior of the space rather
15   *      than the exterior.
16   *
17 < *  BSDF vectors always oriented away from surface, even when "incident."
17 > *  BSDF incident & exiting vectors are always oriented away from surface.
18   *
19   *  Created by Greg Ward on 1/10/11.
20   *
# Line 30 | Line 30
30   extern "C" {
31   #endif
32  
33 + #ifdef _WIN32
34 + #define strcasecmp      stricmp
35 + #endif
36 +
37   #define SDnameLn        128             /* maximum BSDF name length */
38   #define SDmaxCh         3               /* maximum # spectral channels */
39  
# Line 67 | Line 71 | typedef struct {
71   } SDValue;
72  
73   /* Cached, encoded, cumulative distribution for one incident (solid) angle */
74 < #define SD_CDIST_BASE   double          cTotal; \
75 <                        struct SDCDst_s *next
74 > #define SD_CDIST_BASE(styp)     double          cTotal; \
75 >                                struct styp     *next
76   typedef struct SDCDst_s {
77 <        SD_CDIST_BASE;                  /* base fields first */
77 >        SD_CDIST_BASE(SDCDst_s);        /* base fields first */
78          /* ...encoded distribution extends struct */
79   } SDCDst;
80  
81 + extern const SDCDst     SDemptyCD;      /* empty distribution */
82 +
83   /* Forward declaration of BSDF component */
84   typedef struct SDComp_s SDComponent;
85  
# Line 113 | Line 119 | typedef struct {
119  
120   /* Loaded BSDF data */
121   typedef struct {
122 <        char            name[SDnameLn]; /* BSDF name (derived from file) */
122 >        char            name[SDnameLn]; /* BSDF name (usu. derived from file) */
123 >        char            matn[SDnameLn]; /* material name */
124 >        char            makr[SDnameLn]; /* manufacturer */
125          char            *mgf;           /* geometric description (if any) */
126          float           dim[3];         /* width, height, thickness (meters) */
127          SDValue         rLambFront;     /* diffuse front reflectance */
128          SDValue         rLambBack;      /* diffuse rear reflectance */
129          SDValue         tLamb;          /* diffuse transmission */
130 <        SDSpectralDF    *rf, *rb, *tf;  /* non-diffuse BSDF components */
130 >        SDSpectralDF    *rf, *rb;       /* non-diffuse BRDF components */
131 >        SDSpectralDF    *tf, *tb;       /* non-diffuse BTDF components */
132   } SDData;
133  
134   /* List of loaded BSDFs */
# Line 130 | Line 139 | extern struct SDCache_s {
139                          *next;
140   } *SDcacheList;         /* Global BSDF cache */
141  
142 < /* BSDF cache retention preference */
143 < #define SDretainNone    0               /* free unreferenced data (default) */
144 < #define SDretainBSDFs   1               /* keep loaded BSDFs in cache */
142 > /* BSDF cache retention policies */
143 > #define SDretainNone    0               /* free unreferenced BSDF data */
144 > #define SDretainBSDFs   1               /* keep loaded BSDFs in memory */
145   #define SDretainAll     2               /* also keep cumulative cache data */
146  
147 < extern int              SDretainSet;    /* set to SDretainNone by default */
147 > extern int              SDretainSet;    /* =SDretainNone by default */
148  
149   /*****************************************************************
150   * The following routines are less commonly used by applications.
# Line 152 | Line 161 | extern void            SDclipName(char res[SDnameLn], const char
161   /* Allocate new spectral distribution function */
162   extern SDSpectralDF     *SDnewSpectralDF(int nc);
163  
164 + /* Add component(s) to spectral distribution function */
165 + extern SDSpectralDF     *SDaddComponent(SDSpectralDF *odf, int nadd);
166 +
167   /* Free a spectral distribution function */
168   extern void             SDfreeSpectralDF(SDSpectralDF *df);
169  
# Line 189 | Line 201 | void                   SDdisk2square(double sq[2], double diskx, doubl
201   */
202  
203   /* Get BSDF from cache (or load and cache it on first call) */
204 < /* Report any problems to stderr and return NULL on failure */
204 > /* Report any problems to stderr (in English), return NULL on failure */
205   extern const SDData     *SDcacheFile(const char *fname);
206  
207 < /* Free a BSDF from our cache (clear all if NULL) */
207 > /* Free a BSDF from our cache (clear all if sd==NULL) */
208   extern void             SDfreeCache(const SDData *sd);
209  
210   /* Query projected solid angle resolution for non-diffuse BSDF direction(s) */
# Line 217 | Line 229 | extern SDError         SDsampBSDF(SDValue *sv, FVECT ioVec, d
229   * Directions may be passed unnormalized to these routines.
230   */
231  
232 < /* Compute World->BSDF transform from surface normal and up (Y) vector */
232 > /* Compute World->BSDF transform from surface normal and BSDF up vector */
233   extern SDError          SDcompXform(RREAL vMtx[3][3], const FVECT sNrm,
234                                          const FVECT uVec);
235  
# Line 228 | Line 240 | extern SDError         SDinvXform(RREAL iMtx[3][3], RREAL vMt
240   extern SDError          SDmapDir(FVECT resVec, RREAL vMtx[3][3],
241                                          const FVECT inpVec);
242  
243 < /* System-specific BSDF loading routine (not part of our library) */
243 > /* Application-specific BSDF loading routine (not part of our library) */
244   extern SDData           *loadBSDF(char *name);
245  
246 < /* System-specific BSDF error translator (not part of our library) */
246 > /* Application-specific BSDF error translator (not part of our library) */
247   extern char             *transSDError(SDError ec);
248  
249   /*################################################################*/

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines