ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/otypes.h
Revision: 1.10
Committed: Tue May 7 14:53:16 1991 UTC (33 years ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 1.9: +18 -14 lines
Log Message:
added MAT_TFUNC and MAT_TDATA types

File Contents

# User Rev Content
1 greg 1.1 /* Copyright (c) 1986 Regents of the University of California */
2    
3     /* SCCSid "$SunId$ LBL" */
4    
5     /*
6     * otypes.h - defines for object types.
7     *
8     * 1/28/86
9     */
10    
11     typedef struct {
12     char *funame; /* function name */
13 greg 1.7 int flags; /* type flags */
14 greg 1.1 int (*funp)(); /* pointer to function */
15     } FUN;
16 greg 1.7 /* object types in decreasing frequency */
17     #define OBJ_FACE 0 /* polygon */
18     #define OBJ_CONE 1 /* cone */
19     #define OBJ_SPHERE 2 /* sphere */
20     #define TEX_FUNC 3 /* surface texture function */
21     #define OBJ_RING 4 /* disk */
22     #define OBJ_CYLINDER 5 /* cylinder */
23     #define OBJ_INSTANCE 6 /* octree instance */
24     #define OBJ_CUP 7 /* inverted cone */
25     #define OBJ_BUBBLE 8 /* inverted sphere */
26     #define OBJ_TUBE 9 /* inverted cylinder */
27     #define MAT_PLASTIC 10 /* plastic surface */
28     #define MAT_METAL 11 /* metal surface */
29     #define OBJ_SOURCE 12 /* distant source */
30     #define MAT_GLASS 13 /* thin glass surface */
31     #define MAT_TRANS 14 /* translucent material */
32     #define MAT_DIELECTRIC 15 /* dielectric material */
33     #define MAT_INTERFACE 16 /* dielectric interface */
34     #define MAT_PFUNC 17 /* plastic brdf function */
35     #define MAT_MFUNC 18 /* metal brdf function */
36     #define PAT_BFUNC 19 /* brightness function */
37     #define PAT_BDATA 20 /* brightness data */
38     #define PAT_BTEXT 21 /* monochromatic text */
39     #define PAT_CPICT 22 /* color picture */
40     #define MAT_LIGHT 23 /* primary light source */
41     #define MAT_ILLUM 24 /* secondary light source */
42     #define MAT_GLOW 25 /* proximity light source */
43 greg 1.10 #define MAT_SPOT 26 /* spot light source */
44     #define MAT_TFUNC 27 /* trans brdf function */
45     #define MAT_BRTDF 28 /* brtd function */
46     #define MAT_PDATA 29 /* plastic brdf data */
47     #define MAT_MDATA 30 /* metal brdf data */
48     #define MAT_TDATA 31 /* trans brdf data */
49     #define PAT_CFUNC 32 /* color function */
50     #define MAT_CLIP 33 /* clipping surface */
51     #define PAT_CDATA 34 /* color data */
52     #define PAT_CTEXT 35 /* colored text */
53     #define TEX_DATA 36 /* surface texture data */
54     #define MIX_FUNC 37 /* mixing function */
55     #define MIX_DATA 38 /* mixing data */
56     #define MIX_TEXT 39 /* mixing text */
57 greg 1.1 /* number of object types */
58 greg 1.10 #define NUMOTYPE 40
59 greg 1.7 /* type flags */
60     #define T_S 01 /* surface (object) */
61     #define T_M 02 /* material */
62     #define T_P 04 /* pattern */
63     #define T_T 010 /* texture */
64     #define T_X 020 /* mixture */
65     #define T_V 040 /* volume */
66     #define T_L 0100 /* light source modifier */
67     #define T_F 0200 /* function */
68     #define T_D 0400 /* data */
69     #define T_I 01000 /* picture */
70     #define T_E 02000 /* text */
71 greg 1.8 /* user-defined types */
72     #define T_SP1 010000
73     #define T_SP2 020000
74     #define T_SP3 040000
75 greg 1.1
76 greg 1.7 extern FUN ofun[]; /* our type list */
77 greg 1.1
78 greg 1.7 #define issurface(t) (ofun[t].flags & T_S)
79     #define isvolume(t) (ofun[t].flags & T_V)
80     #define ismodifier(t) (!issurface(t))
81     #define ismaterial(t) (ofun[t].flags & T_M)
82     #define istexture(t) (ofun[t].flags & (T_P|T_T|T_X))
83     #define islight(t) (ofun[t].flags & T_L)
84     #define hasdata(t) (ofun[t].flags & (T_D|T_I))
85     #define hasfunc(t) (ofun[t].flags & (T_F|T_D|T_I))
86     #define hastext(t) (ofun[t].flags & T_E)
87 greg 1.1
88 greg 1.7 extern int o_default();
89     /* type list initialization */
90     #define INIT_OTYPE { { "polygon", T_S, o_default }, \
91     { "cone", T_S, o_default }, \
92     { "sphere", T_S, o_default }, \
93     { "texfunc", T_T|T_F, o_default }, \
94     { "ring", T_S, o_default }, \
95     { "cylinder", T_S, o_default }, \
96     { "instance", T_S|T_V, o_default }, \
97     { "cup", T_S, o_default }, \
98     { "bubble", T_S, o_default }, \
99     { "tube", T_S, o_default }, \
100     { "plastic", T_M, o_default }, \
101     { "metal", T_M, o_default }, \
102     { "source", T_S, o_default }, \
103     { "glass", T_M, o_default }, \
104     { "trans", T_M, o_default }, \
105     { "dielectric", T_M, o_default }, \
106     { "interface", T_M, o_default }, \
107     { "plasfunc", T_M|T_F, o_default }, \
108     { "metfunc", T_M|T_F, o_default }, \
109     { "brightfunc", T_P|T_F, o_default }, \
110     { "brightdata", T_P|T_D, o_default }, \
111     { "brighttext", T_P|T_E, o_default }, \
112     { "colorpict", T_P|T_I, o_default }, \
113     { "light", T_M|T_L, o_default }, \
114     { "illum", T_M|T_L, o_default }, \
115     { "glow", T_M|T_L, o_default }, \
116 greg 1.10 { "spotlight", T_M|T_L, o_default }, \
117     { "transfunc", T_M|T_F, o_default }, \
118 greg 1.9 { "BRTDfunc", T_M|T_F, o_default }, \
119 greg 1.7 { "plasdata", T_M|T_D, o_default }, \
120     { "metdata", T_M|T_D, o_default }, \
121 greg 1.10 { "transdata", T_M|T_D, o_default }, \
122 greg 1.7 { "colorfunc", T_P|T_F, o_default }, \
123     { "antimatter", T_M, o_default }, \
124     { "colordata", T_P|T_D, o_default }, \
125     { "colortext", T_P|T_E, o_default }, \
126     { "texdata", T_T|T_D, o_default }, \
127     { "mixfunc", T_X|T_F, o_default }, \
128     { "mixdata", T_X|T_D, o_default }, \
129     { "mixtext", T_X|T_E, o_default }, \
130     }
131 greg 1.1
132     #define ALIASID "alias" /* alias type identifier */