ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/bsdf_t.h
Revision: 3.11
Committed: Sun Nov 10 17:32:09 2013 UTC (10 years, 5 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad4R2P2, rad4R2, rad4R2P1
Changes since 3.10: +2 -2 lines
Log Message:
Removed stray tab

File Contents

# User Rev Content
1 greg 3.11 /* RCSid $Id: bsdf_t.h,v 3.10 2012/09/02 15:33:15 greg Exp $ */
2 greg 3.1 /*
3     * bsdf_t.h
4     *
5 greg 3.4 * Support for variable-resolution BSDF trees.
6     * Assumes "bsdf.h" already included.
7     * Include after "ezxml.h" for SDloadTre() declaration.
8 greg 3.1 *
9     * Created by Greg Ward on 2/2/11.
10     *
11     */
12    
13     #ifndef _BSDF_T_H_
14     #define _BSDF_T_H_
15    
16     #ifdef __cplusplus
17     extern "C" {
18     #endif
19    
20     #define SD_MAXDIM 4 /* maximum expected # dimensions */
21    
22     /* Basic node structure for variable-resolution BSDF data */
23     typedef struct SDNode_s {
24     short ndim; /* number of dimensions */
25     short log2GR; /* log(2) of grid resolution (< 0 for tree) */
26     union {
27     struct SDNode_s *t[1]; /* subtree pointers */
28     float v[1]; /* scattering value(s) */
29     } u; /* subtrees or values (extends struct) */
30     } SDNode;
31    
32 greg 3.10 #define SD_FREFL 1 /* component reflects off front side */
33     #define SD_BREFL 2 /* component reflects off back side */
34     #define SD_FXMIT 3 /* component transmits through front side */
35     #define SD_BXMIT 4 /* component transmits through back side */
36 greg 3.7
37 greg 3.6 /* Variable-resolution BSDF holder */
38     typedef struct {
39 greg 3.7 int sidef; /* transmitted component? */
40 greg 3.6 SDNode *st; /* BSDF tree */
41     } SDTre;
42    
43     /* Holder for cumulative distribution (sum of BSDF * projSA) */
44 greg 3.9 typedef struct SDTreCDst_s {
45     /* base fields; must come first */
46     SD_CDIST_BASE(SDTreCDst_s);
47 greg 3.6 double clim[2][2]; /* input coordinate limits */
48     double max_psa; /* maximum projected solid angle */
49 greg 3.10 short sidef; /* which mode is in play */
50 greg 3.8 short isodist; /* isotropic distribution? */
51 greg 3.6 int calen; /* cumulative array length */
52     struct {
53     unsigned hndx; /* hilbert index */
54     unsigned cuml; /* cumulative value */
55 greg 3.11 } carr[1]; /* cumulative array (extends struct) */
56 greg 3.6 } SDTreCDst;
57    
58 greg 3.4 #ifdef _EZXML_H
59 greg 3.1 /* Load a variable-resolution BSDF tree from an open XML file */
60 greg 3.3 extern SDError SDloadTre(SDData *sd, ezxml_t wtl);
61 greg 3.4 #endif
62 greg 3.1
63     /* Our matrix handling routines */
64 greg 3.5 extern SDFunc SDhandleTre;
65 greg 3.1
66     #ifdef __cplusplus
67     }
68     #endif
69     #endif /* ! _BSDF_T_H_ */