- Recursive environment map render
[blender.git] / source / blender / makesdna / DNA_texture_types.h
1 /**
2  * blenlib/DNA_texture_types.h (mar-2001 nzc)
3  *
4  * $Id$ 
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34 #ifndef DNA_TEXTURE_TYPES_H
35 #define DNA_TEXTURE_TYPES_H
36
37 #include "DNA_ID.h"
38
39 struct Ipo;
40 struct PluginTex;
41 struct ColorBand;
42 struct EnvMap;
43 struct Object;
44 struct Tex;
45 struct Image;
46
47 typedef struct MTex {
48
49         short texco, mapto, maptoneg, blendtype;
50         struct Object *object;
51         struct Tex *tex;
52         
53         char projx, projy, projz, mapping;
54         float ofs[3], size[3];
55         
56         short texflag, colormodel;
57         float r, g, b, k;
58         float def_var;
59         
60         float colfac, norfac, varfac;
61         
62 } MTex;
63
64 #ifndef DNA_USHORT_FIX
65 #define DNA_USHORT_FIX
66 /**
67  * @deprecated This typedef serves to avoid badly typed functions when
68  * @deprecated compiling while delivering a proper dna.c. Do not use
69  * @deprecated it in any case.
70  */
71 typedef unsigned short dna_ushort_fix;
72 #endif
73
74 typedef struct PluginTex {
75         char name[160];
76         void *handle;
77         
78         char *pname;
79         char *stnames;
80
81         int stypes;
82         int vars;
83         void *varstr;
84         float *result;
85         float *cfra;
86         
87         float data[32];
88
89         int (*doit)(void);
90
91         /* should be void (*)(unsigned short)... patched */     
92         void (*callback)(dna_ushort_fix);
93         
94         int version, pad;
95 } PluginTex;
96
97 typedef struct CBData {
98         float r, g, b, a, pos;
99         int cur;
100 } CBData;
101
102 typedef struct ColorBand {
103         short flag, tot, cur, ipotype;
104         CBData data[16];
105         
106 } ColorBand;
107
108 typedef struct EnvMap {
109         struct Object *object;
110         struct Image *ima;              /* type ENV_LOAD */
111         struct Image *cube[6];          /* these images are dynamic, not part of the main struct */
112         float imat[4][4];
113         short type, stype;
114         float clipsta, clipend;
115         unsigned int notlay;
116         short cuberes, depth;
117         short ok, lastframe;
118         short recalc, lastsize;
119         int pad1;
120 } EnvMap;
121
122 typedef struct Tex {
123         ID id;
124         
125         float noisesize, turbul;
126         float bright, contrast, rfac, gfac, bfac;
127         float filtersize;
128         short noisedepth, noisetype;
129         
130         short imaflag, flag;
131         short type, stype;
132         
133         float cropxmin, cropymin, cropxmax, cropymax;
134         short xrepeat, yrepeat;
135         short extend, len;
136         short frames, offset, sfra, fie_ima;
137         float norfac, *nor;
138         
139         struct Ipo *ipo;
140         struct Image *ima;
141         struct PluginTex *plugin;
142         struct ColorBand *coba;
143         struct EnvMap *env;
144         
145         short fradur[4][2];
146         
147 } Tex;
148
149 /* **************** TEX ********************* */
150
151 /* type */
152 #define TEX_CLOUDS              1
153 #define TEX_WOOD                2
154 #define TEX_MARBLE              3
155 #define TEX_MAGIC               4
156 #define TEX_BLEND               5
157 #define TEX_STUCCI              6
158 #define TEX_NOISE               7
159 #define TEX_IMAGE               8
160 #define TEX_PLUGIN              9
161 #define TEX_ENVMAP              10
162
163 /* imaflag */
164 #define TEX_INTERPOL    1
165 #define TEX_USEALPHA    2
166 #define TEX_MIPMAP              4
167 #define TEX_FIELDS              8
168 #define TEX_IMAROT              16
169 #define TEX_CALCALPHA   32
170 #define TEX_ANIMCYCLIC  64
171 #define TEX_ANIM5               128
172 #define TEX_ANTIALI             256
173 #define TEX_ANTISCALE   512
174 #define TEX_STD_FIELD   1024
175
176 #define TEX_LASOPPATCH  8192
177 #define TEX_MORKPATCH   16384
178
179 /* flag */
180 #define TEX_COLORBAND   1
181 #define TEX_FLIPBLEND   2
182 #define TEX_NEGALPHA    4
183
184 /* extend (starts with 1 because of backward comp.) */
185 #define TEX_EXTEND              1
186 #define TEX_CLIP                2
187 #define TEX_REPEAT              3
188 #define TEX_CLIPCUBE    4
189
190 /* noisetype */
191 #define TEX_NOISESOFT   0
192 #define TEX_NOISEPERL   1
193
194 /* wrap */
195 #define MTEX_FLAT               0
196 #define MTEX_CUBE               1
197 #define MTEX_TUBE               2
198 #define MTEX_SPHERE             3
199
200 /* return value */
201 #define TEX_INT         0
202 #define TEX_RGB         1
203 #define TEX_NOR         2
204
205 /* texco */
206 #define TEXCO_ORCO              1
207 #define TEXCO_REFL              2
208 #define TEXCO_NORM              4
209 #define TEXCO_GLOB              8
210 #define TEXCO_UV                16
211 #define TEXCO_OBJECT    32
212 #define TEXCO_LAVECTOR  64
213 #define TEXCO_VIEW              128
214 #define TEXCO_STICKY    256
215 #define TEXCO_OSA               512
216 #define TEXCO_WINDOW    1024
217 #define NEED_UV                 2048
218
219 /* mapto */
220 #define MAP_COL                 1
221 #define MAP_NORM                2
222 #define MAP_COLSPEC             4
223 #define MAP_COLMIR              8
224 #define MAP_VARS                (0xFFF0)
225 #define MAP_REF                 16
226 #define MAP_SPEC                32
227 #define MAP_EMIT                64
228 #define MAP_ALPHA               128
229 #define MAP_HAR                 256
230 #define MAP_XTRA                512
231
232 /* pr_type */
233 #define MA_FLAT                 0
234 #define MA_SPHERE               1
235 #define MA_CUBE                 2
236
237 /* pr_back */
238 #define MA_DARK                 1
239
240 /* pr_lamp      */
241
242 /* **************** MTEX ********************* */
243
244 /* proj */
245 #define PROJ_N                  0
246 #define PROJ_X                  1
247 #define PROJ_Y                  2
248 #define PROJ_Z                  3
249
250 /* texflag */
251 #define MTEX_RGBTOINT   1
252 #define MTEX_STENCIL    2
253 #define MTEX_NEGATIVE   4
254 #define MTEX_ALPHAMIX   8
255
256 /* blendtype */
257 #define MTEX_BLEND              0
258 #define MTEX_MUL                1
259 #define MTEX_ADD                2
260 #define MTEX_SUB                3
261
262 /* **************** EnvMap ********************* */
263
264 /* type */
265 #define ENV_CUBE        0
266 #define ENV_PLANE       1
267 #define ENV_SPHERE      2
268
269 /* stype */
270 #define ENV_STATIC      0
271 #define ENV_ANIM        1
272 #define ENV_LOAD        2
273
274 /* ok */
275 #define ENV_NORMAL      1
276 #define ENV_OSA         2
277
278 #endif
279