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.18 by greg, Mon Mar 5 00:17:06 2012 UTC vs.
Revision 2.20 by greg, Sat Oct 13 20:15:43 2012 UTC

# Line 78 | Line 78 | typedef struct SDCDst_s {
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 125 | Line 127 | typedef struct {
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 242 | Line 245 | extern SDData          *loadBSDF(char *name);
245  
246   /* Application-specific BSDF error translator (not part of our library) */
247   extern char             *transSDError(SDError ec);
245
246 /*################################################################*/
247 /*######### DEPRECATED DEFINITIONS AWAITING PERMANENT REMOVAL #######*/
248 /*
249 * Header for BSDF i/o and access routines
250 */
251
252 #include "mat4.h"
253                                /* up directions */
254 typedef enum {
255        UDzneg=-3,
256        UDyneg=-2,
257        UDxneg=-1,
258        UDunknown=0,
259        UDxpos=1,
260        UDypos=2,
261        UDzpos=3
262 } UpDir;
263                                /* BSDF coordinate calculation routines */
264                                /* vectors always point away from surface */
265
266 typedef int     b_vecf2(FVECT v, int n, void *cd);
267 typedef int     b_ndxf2(FVECT v, void *cd);
268 typedef double  b_radf2(int n, void *cd);
269
270 /* Bidirectional Scattering Distribution Function */
271 struct BSDF_data {
272        int     ninc;                   /* number of incoming directions */
273        int     nout;                   /* number of outgoing directions */
274        float   dim[3];                 /* width, height, thickness (meters) */
275        char    *mgf;                   /* geometric description (if any) */
276        void    *ib_priv;               /* input basis private data */
277        b_vecf2 *ib_vec;                /* get input vector from index */
278        b_ndxf2 *ib_ndx;                /* get input index from vector */
279        b_radf2 *ib_ohm;                /* get input radius for index */
280        void    *ob_priv;               /* output basis private data */
281        b_vecf2 *ob_vec;                /* get output vector from index */
282        b_ndxf2 *ob_ndx;                /* get output index from vector */
283        b_radf2 *ob_ohm;                /* get output radius for index */
284        float   *bsdf;                  /* scattering distribution data */
285 };                              /* bidirectional scattering distrib. func. */
286
287 #define getBSDF_incvec(v,b,i)   (*(b)->ib_vec)(v,i,(b)->ib_priv)
288 #define getBSDF_incndx(b,v)     (*(b)->ib_ndx)(v,(b)->ib_priv)
289 #define getBSDF_incohm(b,i)     (*(b)->ib_ohm)(i,(b)->ib_priv)
290 #define getBSDF_outvec(v,b,o)   (*(b)->ob_vec)(v,o,(b)->ob_priv)
291 #define getBSDF_outndx(b,v)     (*(b)->ob_ndx)(v,(b)->ob_priv)
292 #define getBSDF_outohm(b,o)     (*(b)->ob_ohm)(o,(b)->ob_priv)
293 #define BSDF_value(b,i,o)       (b)->bsdf[(o)*(b)->ninc + (i)]
294
295 extern struct BSDF_data *load_BSDF(char *fname);
296 extern void free_BSDF(struct BSDF_data *b);
297 extern int r_BSDF_incvec(FVECT v, struct BSDF_data *b, int i,
298                                double rv, MAT4 xm);
299 extern int r_BSDF_outvec(FVECT v, struct BSDF_data *b, int o,
300                                double rv, MAT4 xm);
301 extern int getBSDF_xfm(MAT4 xm, FVECT nrm, UpDir ud, char *xfbuf);
302
303 /*######### END DEPRECATED DEFINITIONS #######*/
304 /*################################################################*/
248  
249   #ifdef __cplusplus
250   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines