ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/otypes.h
Revision: 2.19
Committed: Tue Jun 26 14:42:18 2018 UTC (5 years, 10 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad5R4, rad5R2, rad5R3
Changes since 2.18: +3 -3 lines
Log Message:
Decided to go with "aBSDF" for "aperture BSDF" rather than "sBSDF"

File Contents

# Content
1 /* RCSid $Id: otypes.h,v 2.18 2018/06/25 20:49:10 greg Exp $ */
2 /*
3 * otypes.h - defines for object types.
4 */
5 #ifndef _RAD_OTYPES_H_
6 #define _RAD_OTYPES_H_
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 typedef struct {
12 char *funame; /* function name */
13 int flags; /* type flags */
14 #ifdef FUN_ARGLIST
15 int (*funp)(FUN_ARGLIST); /* pointer to function */
16 #else
17 int (*funp)(); /* pointer to function */
18 #endif
19 } FUN;
20
21 #ifdef FUN_ARGLIST
22 extern int o_default(FUN_ARGLIST);
23 #else
24 extern int o_default(); /* XXX conflict with radogl.h */
25 #endif
26
27 /* object types in decreasing frequency */
28 #define OBJ_FACE 0 /* polygon */
29 #define OBJ_CONE 1 /* cone */
30 #define OBJ_SPHERE 2 /* sphere */
31 #define TEX_FUNC 3 /* surface texture function */
32 #define OBJ_RING 4 /* disk */
33 #define OBJ_CYLINDER 5 /* cylinder */
34 #define OBJ_INSTANCE 6 /* octree instance */
35 #define OBJ_CUP 7 /* inverted cone */
36 #define OBJ_BUBBLE 8 /* inverted sphere */
37 #define OBJ_TUBE 9 /* inverted cylinder */
38 #define OBJ_MESH 10 /* mesh instance */
39 #define MOD_ALIAS 11 /* modifier alias */
40 #define MAT_PLASTIC 12 /* plastic surface */
41 #define MAT_METAL 13 /* metal surface */
42 #define MAT_GLASS 14 /* thin glass surface */
43 #define MAT_TRANS 15 /* translucent material */
44 #define MAT_DIELECTRIC 16 /* dielectric material */
45 #define MAT_PLASTIC2 17 /* anisotropic plastic */
46 #define MAT_METAL2 18 /* anisotropic metal */
47 #define MAT_TRANS2 19 /* anisotropic translucent material */
48 #define MAT_INTERFACE 20 /* dielectric interface */
49 #define MAT_PFUNC 21 /* plastic brdf function */
50 #define MAT_MFUNC 22 /* metal brdf function */
51 #define PAT_BFUNC 23 /* brightness function */
52 #define PAT_BDATA 24 /* brightness data */
53 #define PAT_BTEXT 25 /* monochromatic text */
54 #define PAT_CPICT 26 /* color picture */
55 #define MAT_GLOW 27 /* proximity light source */
56 #define OBJ_SOURCE 28 /* distant source */
57 #define MAT_LIGHT 29 /* primary light source */
58 #define MAT_ILLUM 30 /* secondary light source */
59 #define MAT_SPOT 31 /* spot light source */
60 #define MAT_MIST 32 /* mist medium */
61 #define MAT_MIRROR 33 /* mirror (secondary source) */
62 #define MAT_TFUNC 34 /* trans brdf function */
63 #define MAT_BRTDF 35 /* BRTD function */
64 #define MAT_BSDF 36 /* BSDF data file */
65 #define MAT_ABSDF 37 /* aperture BSDF data file */
66 #define MAT_PDATA 38 /* plastic brdf data */
67 #define MAT_MDATA 39 /* metal brdf data */
68 #define MAT_TDATA 40 /* trans brdf data */
69 #define PAT_CFUNC 41 /* color function */
70 #define MAT_CLIP 42 /* clipping surface */
71 #define PAT_CDATA 43 /* color data */
72 #define PAT_CTEXT 44 /* colored text */
73 #define TEX_DATA 45 /* surface texture data */
74 #define MIX_FUNC 46 /* mixing function */
75 #define MIX_DATA 47 /* mixing data */
76 #define MIX_TEXT 48 /* mixing text */
77 #define MIX_PICT 49 /* mixing picture */
78 #define MAT_DIRECT1 50 /* unidirecting material */
79 #define MAT_DIRECT2 51 /* bidirecting material */
80 #define MAT_ASHIKHMIN 52 /* Ashikhmin-Shirley BRDF material */
81 /* number of object types */
82 #define NUMOTYPE 53
83 /* type flags */
84 #define T_S 01 /* surface (object) */
85 #define T_M 02 /* material */
86 #define T_P 04 /* pattern */
87 #define T_T 010 /* texture */
88 #define T_X 020 /* mixture */
89 #define T_V 040 /* volume */
90 #define T_L 0100 /* light source modifier */
91 #define T_LV 0200 /* virtual light source modifier */
92 #define T_F 0400 /* function */
93 #define T_D 01000 /* data */
94 #define T_I 02000 /* picture */
95 #define T_E 04000 /* text */
96 /* user-defined types */
97 #define T_SP1 010000
98 #define T_SP2 020000
99 #define T_SP3 040000
100
101 extern FUN ofun[]; /* our type list */
102
103 #define issurface(t) (ofun[t].flags & T_S)
104 #define isvolume(t) (ofun[t].flags & T_V)
105 #define ismodifier(t) (!(ofun[t].flags & (T_S|T_V)))
106 #define ismaterial(t) (ofun[t].flags & T_M)
107 #define ispattern(t) (ofun[t].flags & T_P)
108 #define istexture(t) (ofun[t].flags & T_T)
109 #define ismixture(t) (ofun[t].flags & T_X)
110 #define islight(t) (ofun[t].flags & T_L)
111 #define isvlight(t) (ofun[t].flags & T_LV)
112 #define hasdata(t) (ofun[t].flags & (T_D|T_I))
113 #define hasfunc(t) (ofun[t].flags & (T_F|T_D|T_I))
114 #define hastext(t) (ofun[t].flags & T_E)
115 #define isflat(t) ((t)==OBJ_FACE || (t)==OBJ_RING)
116
117 #define ALIASKEY "alias" /* alias keyword */
118 #define ALIASMOD "inherit" /* inherit target modifier */
119
120 /* type list initialization */
121 #define INIT_OTYPE { { "polygon", T_S, o_default }, \
122 { "cone", T_S, o_default }, \
123 { "sphere", T_S, o_default }, \
124 { "texfunc", T_T|T_F, o_default }, \
125 { "ring", T_S, o_default }, \
126 { "cylinder", T_S, o_default }, \
127 { "instance", T_V, o_default }, \
128 { "cup", T_S, o_default }, \
129 { "bubble", T_S, o_default }, \
130 { "tube", T_S, o_default }, \
131 { "mesh", T_V, o_default }, \
132 { ALIASKEY, 0, o_default }, \
133 { "plastic", T_M, o_default }, \
134 { "metal", T_M, o_default }, \
135 { "glass", T_M, o_default }, \
136 { "trans", T_M, o_default }, \
137 { "dielectric", T_M, o_default }, \
138 { "plastic2", T_M|T_F, o_default }, \
139 { "metal2", T_M|T_F, o_default }, \
140 { "trans2", T_M|T_F, o_default }, \
141 { "interface", T_M, o_default }, \
142 { "plasfunc", T_M|T_F, o_default }, \
143 { "metfunc", T_M|T_F, o_default }, \
144 { "brightfunc", T_P|T_F, o_default }, \
145 { "brightdata", T_P|T_D, o_default }, \
146 { "brighttext", T_P|T_E, o_default }, \
147 { "colorpict", T_P|T_I, o_default }, \
148 { "glow", T_M|T_L, o_default }, \
149 { "source", T_S, o_default }, \
150 { "light", T_M|T_L, o_default }, \
151 { "illum", T_M|T_L, o_default }, \
152 { "spotlight", T_M|T_L, o_default }, \
153 { "mist", T_M, o_default }, \
154 { "mirror", T_M|T_LV, o_default }, \
155 { "transfunc", T_M|T_F, o_default }, \
156 { "BRTDfunc", T_M|T_F, o_default }, \
157 { "BSDF", T_M|T_D, o_default }, \
158 { "aBSDF", T_M|T_D, o_default }, \
159 { "plasdata", T_M|T_D, o_default }, \
160 { "metdata", T_M|T_D, o_default }, \
161 { "transdata", T_M|T_D, o_default }, \
162 { "colorfunc", T_P|T_F, o_default }, \
163 { "antimatter", T_M, o_default }, \
164 { "colordata", T_P|T_D, o_default }, \
165 { "colortext", T_P|T_E, o_default }, \
166 { "texdata", T_T|T_D, o_default }, \
167 { "mixfunc", T_X|T_F, o_default }, \
168 { "mixdata", T_X|T_D, o_default }, \
169 { "mixtext", T_X|T_E, o_default }, \
170 { "mixpict", T_X|T_I, o_default }, \
171 { "prism1", T_M|T_F|T_LV, o_default }, \
172 { "prism2", T_M|T_F|T_LV, o_default }, \
173 { "ashik2", T_M|T_F, o_default }, \
174 }
175
176
177 #ifdef __cplusplus
178 }
179 #endif
180 #endif /* _RAD_OTYPES_H_ */