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

Comparing ray/src/common/bsdf_m.h (file contents):
Revision 3.4 by greg, Fri Apr 8 18:13:48 2011 UTC vs.
Revision 3.9 by greg, Fri Jan 5 21:00:24 2018 UTC

# Line 33 | Line 33 | typedef struct {
33          b_vecf          *ob_vec;        /* get output vector from index */
34          b_ndxf          *ob_ndx;        /* get output index from vector */
35          b_ohmf          *ob_ohm;        /* get output proj. SA for index */
36 +        C_CHROMA        *chroma;        /* chromaticity data */
37          float           bsdf[1];        /* scattering data (extends struct) */
38   } SDMat;
39  
# Line 44 | Line 45 | typedef struct {
45   #define mBSDF_outndx(b,v)       (*(b)->ob_ndx)(v,(b)->ob_priv)
46   #define mBSDF_outohm(b,o)       (*(b)->ob_ohm)(o,(b)->ob_priv)
47   #define mBSDF_value(b,i,o)      (b)->bsdf[(o)*(b)->ninc + (i)]
48 + #define mBSDF_chroma(b,i,o)     (b)->chroma[(o)*(b)->ninc + (i)]
49  
50   /* Holder for cumulative distribution (sum of BSDF * projSA) */
51 < typedef struct {
52 <        SD_CDIST_BASE;                  /* base fields; must come first */
51 > typedef struct SDMatCDst_s {
52 >        SD_CDIST_BASE(SDMatCDst_s);     /* base fields; must come first */
53          int             indx;           /* incident angle index */
54          void            *ob_priv;       /* private data for generator */
55          b_vecf          *ob_vec;        /* outbound vector generator */
# Line 61 | Line 63 | extern SDError         SDloadMtx(SDData *sd, ezxml_t wtl);
63   #endif
64  
65   /* Our matrix handling routines */
66 < extern SDFunc           SDhandleMtx;
66 > extern const SDFunc     SDhandleMtx;
67 >
68 > /******** Klems basis declarations for more intimate access ********/
69 >
70 > #define MAXLATS         46              /* maximum number of latitudes */
71 >
72 > /* BSDF angle specification */
73 > typedef struct {
74 >        char    name[64];               /* basis name */
75 >        int     nangles;                /* total number of directions */
76 >        struct {
77 >                float   tmin;                   /* starting theta */
78 >                int     nphis;                  /* number of phis (0 term) */
79 >        } lat[MAXLATS+1];               /* latitudes */
80 > } ANGLE_BASIS;
81 >
82 > #define MAXABASES       7               /* limit on defined bases */
83 >
84 > extern ANGLE_BASIS      abase_list[MAXABASES];
85 >
86 > extern int              nabases;        /* current number of defined bases */
87 >
88 > extern C_COLOR  mtx_RGB_prim[3];        /* matrix RGB primaries  */
89 > extern float    mtx_RGB_coef[3];        /* corresponding Y coefficients */
90 >
91 > /* Get color or grayscale value for BSDF in the given directions */
92 > extern int              mBSDF_color(float coef[], const SDMat *b, int i, int o);
93 >
94 > /* Get vector for this angle basis index (front exiting) */
95 > extern b_vecf           fo_getvec;
96 >
97 > /* Get index corresponding to the given vector (front exiting) */
98 > extern b_ndxf           fo_getndx;
99 >
100 > /* Get projected solid angle for this angle basis index (universal) */
101 > extern b_ohmf           io_getohm;
102 >
103 > /* Get vector for this angle basis index (back incident) */
104 > extern b_vecf           bi_getvec;
105 >
106 > /* Get index corresponding to the vector (back incident) */
107 > extern b_ndxf           bi_getndx;
108 >
109 > /* Get vector for this angle basis index (back exiting) */
110 > extern b_vecf           bo_getvec;
111 >
112 > /* Get index corresponding to the vector (back exiting) */
113 > extern b_ndxf           bo_getndx;
114 >
115 > /* Get vector for this angle basis index (front incident) */
116 > extern b_vecf           fi_getvec;
117 >
118 > /* Get index corresponding to the vector (front incident) */
119 > extern b_ndxf           fi_getndx;
120  
121   #ifdef __cplusplus
122   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines