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

Comparing ray/src/gen/mkillum.h (file contents):
Revision 2.16 by greg, Wed Mar 4 00:12:25 2009 UTC vs.
Revision 2.17 by greg, Fri Jun 12 17:37:37 2009 UTC

# Line 7 | Line 7
7  
8   #include  "ray.h"
9   #include  "otypes.h"
10 + #include  "bsdf.h"
11   #include  "random.h"
12  
13   #ifdef __cplusplus
# Line 18 | Line 19 | extern "C" {
19   #define  IL_COLAVG      0x4             /* use average color */
20   #define  IL_DATCLB      0x8             /* OK to clobber data file */
21  
21                                /* up directions */
22 typedef enum {
23        UDzneg=-3,
24        UDyneg=-2,
25        UDxneg=-1,
26        UDunknown=0,
27        UDxpos=1,
28        UDypos=2,
29        UDzpos=3
30 } UpDir;
31                                /* BSDF coordinate calculation routines */
32                                /* vectors always point away from surface */
33 typedef int     b_vecf(FVECT, int, void *);
34 typedef int     b_ndxf(FVECT, void *);
35 typedef double  b_radf(int, void *);
36
37 /* Bidirectional Scattering Distribution Function */
38 struct BSDF_data {
39        int     ninc;                   /* number of incoming directions */
40        int     nout;                   /* number of outgoing directions */
41        void    *ib_priv;               /* input basis private data */
42        b_vecf  *ib_vec;                /* get input vector from index */
43        b_ndxf  *ib_ndx;                /* get input index from vector */
44        b_radf  *ib_ohm;                /* get input radius for index */
45        void    *ob_priv;               /* output basis private data */
46        b_vecf  *ob_vec;                /* get output vector from index */
47        b_ndxf  *ob_ndx;                /* get output index from vector */
48        b_radf  *ob_ohm;                /* get output radius for index */
49        float   *bsdf;                  /* scattering distribution data */
50 };                              /* bidirectional scattering distrib. func. */
51
22   struct illum_args {
23          int     flags;                  /* flags from list above */
24          UpDir   udir;                   /* up direction */
# Line 65 | Line 35 | struct illum_args {
35          COLOR   col;                    /* computed average color */
36   };                              /* illum options */
37  
68 #define getBSDF_incvec(v,b,i)   (*(b)->ib_vec)(v,i,(b)->ib_priv)
69 #define getBSDF_incndx(b,v)     (*(b)->ib_ndx)(v,(b)->ib_priv)
70 #define getBSDF_incohm(b,i)     (*(b)->ib_ohm)(i,(b)->ib_priv)
71 #define getBSDF_outvec(v,b,o)   (*(b)->ob_vec)(v,o,(b)->ob_priv)
72 #define getBSDF_outndx(b,v)     (*(b)->ob_ndx)(v,(b)->ob_priv)
73 #define getBSDF_outohm(b,o)     (*(b)->ob_ohm)(o,(b)->ob_priv)
74 #define BSDF_value(b,i,o)       (b)->bsdf[(o)*(b)->ninc + (i)]
75
76 extern struct BSDF_data *load_BSDF(char *fname);
77 extern void free_BSDF(struct BSDF_data *b);
78 extern int r_BSDF_incvec(FVECT v, struct BSDF_data *b, int i,
79                                double rv, MAT4 xm);
80 extern int r_BSDF_outvec(FVECT v, struct BSDF_data *b, int o,
81                                double rv, MAT4 xm);
82 extern int getBSDF_xfm(MAT4 xm, FVECT nrm, UpDir ud);
38   extern void redistribute(struct BSDF_data *b, int nalt, int nazi,
39                                  FVECT u, FVECT v, FVECT w, MAT4 xm);
40  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines