Eesho's patch for new noise textures!
[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         float dispfac; 
62         short pad1, pad2; 
63         
64 } MTex;
65
66 #ifndef DNA_USHORT_FIX
67 #define DNA_USHORT_FIX
68 /**
69  * @deprecated This typedef serves to avoid badly typed functions when
70  * @deprecated compiling while delivering a proper dna.c. Do not use
71  * @deprecated it in any case.
72  */
73 typedef unsigned short dna_ushort_fix;
74 #endif
75
76 typedef struct PluginTex {
77         char name[160];
78         void *handle;
79         
80         char *pname;
81         char *stnames;
82
83         int stypes;
84         int vars;
85         void *varstr;
86         float *result;
87         float *cfra;
88         
89         float data[32];
90
91         int (*doit)(void);
92
93         /* should be void (*)(unsigned short)... patched */     
94         void (*callback)(dna_ushort_fix);
95         
96         int version, pad;
97 } PluginTex;
98
99 typedef struct CBData {
100         float r, g, b, a, pos;
101         int cur;
102 } CBData;
103
104 typedef struct ColorBand {
105         short flag, tot, cur, ipotype;
106         CBData data[16];
107         
108 } ColorBand;
109
110 typedef struct EnvMap {
111         struct Object *object;
112         struct Image *ima;              /* type ENV_LOAD */
113         struct Image *cube[6];          /* these images are dynamic, not part of the main struct */
114         float imat[4][4];
115         short type, stype;
116         float clipsta, clipend;
117         unsigned int notlay;
118         short cuberes, depth;
119         short ok, lastframe;
120         short recalc, lastsize;
121         int pad1;
122 } EnvMap;
123
124 typedef struct Tex {
125         ID id;
126         
127         float noisesize, turbul;
128         float bright, contrast, rfac, gfac, bfac;
129         float filtersize;
130
131         /* newnoise: musgrave parameters */
132         float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain;
133
134         /* newnoise: distorted noise amount, musgrave & voronoi ouput scale */
135         float dist_amount, ns_outscale;
136
137         /* newnoise: voronoi nearest neighbour weights, minkovsky exponent, distance metric & color type */
138         float vn_w1, vn_w2, vn_w3, vn_w4, vn_mexp;
139         short vn_distm, vn_coltype;
140
141         short noisedepth, noisetype;
142
143         /* newnoise: noisebasis type for clouds/marble/etc, noisebasis2 only used for distorted noise */
144         short noisebasis, noisebasis2;
145         
146         short imaflag, flag;
147         short type, stype;
148         
149         float cropxmin, cropymin, cropxmax, cropymax;
150         short xrepeat, yrepeat;
151         short extend, len;
152         short frames, offset, sfra, fie_ima;
153         float norfac, *nor;
154         
155         struct Ipo *ipo;
156         struct Image *ima;
157         struct PluginTex *plugin;
158         struct ColorBand *coba;
159         struct EnvMap *env;
160         
161         short fradur[4][2];
162         
163 } Tex;
164
165 /* **************** TEX ********************* */
166
167 /* type */
168 #define TEX_CLOUDS              1
169 #define TEX_WOOD                2
170 #define TEX_MARBLE              3
171 #define TEX_MAGIC               4
172 #define TEX_BLEND               5
173 #define TEX_STUCCI              6
174 #define TEX_NOISE               7
175 #define TEX_IMAGE               8
176 #define TEX_PLUGIN              9
177 #define TEX_ENVMAP              10
178 #define TEX_MUSGRAVE    11
179 #define TEX_VORONOI             12
180 #define TEX_DISTNOISE   13
181
182 /* musgrave stype */
183 #define TEX_MFRACTAL            0
184 #define TEX_RIDGEDMF            1
185 #define TEX_HYBRIDMF            2
186 #define TEX_FBM                         3
187 #define TEX_HTERRAIN            4
188
189 /* newnoise: noisebasis 1 & 2 */
190 #define TEX_BLENDER                     0
191 #define TEX_STDPERLIN           1
192 #define TEX_NEWPERLIN           2
193 #define TEX_VORONOI_F1          3
194 #define TEX_VORONOI_F2          4
195 #define TEX_VORONOI_F3          5
196 #define TEX_VORONOI_F4          6
197 #define TEX_VORONOI_F2F1        7
198 #define TEX_VORONOI_CRACKLE             8
199 #define TEX_CELLNOISE           14
200
201 /* newnoise: Voronoi distance metrics, vn_distm */
202 #define TEX_DISTANCE            0
203 #define TEX_DISTANCE_SQUARED            1
204 #define TEX_MANHATTAN           2
205 #define TEX_CHEBYCHEV           3
206 #define TEX_MINKOVSKY_HALF              4
207 #define TEX_MINKOVSKY_FOUR              5
208 #define TEX_MINKOVSKY           6
209
210 /* imaflag */
211 #define TEX_INTERPOL    1
212 #define TEX_USEALPHA    2
213 #define TEX_MIPMAP              4
214 #define TEX_FIELDS              8
215 #define TEX_IMAROT              16
216 #define TEX_CALCALPHA   32
217 #define TEX_ANIMCYCLIC  64
218 #define TEX_ANIM5               128
219 #define TEX_ANTIALI             256
220 #define TEX_ANTISCALE   512
221 #define TEX_STD_FIELD   1024
222
223 #define TEX_LASOPPATCH  8192
224 #define TEX_MORKPATCH   16384
225
226 /* flag */
227 #define TEX_COLORBAND   1
228 #define TEX_FLIPBLEND   2
229 #define TEX_NEGALPHA    4
230
231 /* extend (starts with 1 because of backward comp.) */
232 #define TEX_EXTEND              1
233 #define TEX_CLIP                2
234 #define TEX_REPEAT              3
235 #define TEX_CLIPCUBE    4
236
237 /* noisetype */
238 #define TEX_NOISESOFT   0
239 #define TEX_NOISEPERL   1
240
241 /* wrap */
242 #define MTEX_FLAT               0
243 #define MTEX_CUBE               1
244 #define MTEX_TUBE               2
245 #define MTEX_SPHERE             3
246
247 /* return value */
248 #define TEX_INT         0
249 #define TEX_RGB         1
250 #define TEX_NOR         2
251
252 /* texco */
253 #define TEXCO_ORCO              1
254 #define TEXCO_REFL              2
255 #define TEXCO_NORM              4
256 #define TEXCO_GLOB              8
257 #define TEXCO_UV                16
258 #define TEXCO_OBJECT    32
259 #define TEXCO_LAVECTOR  64
260 #define TEXCO_VIEW              128
261 #define TEXCO_STICKY    256
262 #define TEXCO_OSA               512
263 #define TEXCO_WINDOW    1024
264 #define NEED_UV                 2048
265
266 /* mapto */
267 #define MAP_COL                 1
268 #define MAP_NORM                2
269 #define MAP_COLSPEC             4
270 #define MAP_COLMIR              8
271 #define MAP_VARS                (0xFFF0)
272 #define MAP_REF                 16
273 #define MAP_SPEC                32
274 #define MAP_EMIT                64
275 #define MAP_ALPHA               128
276 #define MAP_HAR                 256
277 #define MAP_XTRA                512
278 #define MAP_DISPLACE    4096
279
280 /* pr_type */
281 #define MA_FLAT                 0
282 #define MA_SPHERE               1
283 #define MA_CUBE                 2
284
285 /* pr_back */
286 #define MA_DARK                 1
287
288 /* pr_lamp      */
289
290 /* **************** MTEX ********************* */
291
292 /* proj */
293 #define PROJ_N                  0
294 #define PROJ_X                  1
295 #define PROJ_Y                  2
296 #define PROJ_Z                  3
297
298 /* texflag */
299 #define MTEX_RGBTOINT   1
300 #define MTEX_STENCIL    2
301 #define MTEX_NEGATIVE   4
302 #define MTEX_ALPHAMIX   8
303
304 /* blendtype */
305 #define MTEX_BLEND              0
306 #define MTEX_MUL                1
307 #define MTEX_ADD                2
308 #define MTEX_SUB                3
309
310 /* **************** EnvMap ********************* */
311
312 /* type */
313 #define ENV_CUBE        0
314 #define ENV_PLANE       1
315 #define ENV_SPHERE      2
316
317 /* stype */
318 #define ENV_STATIC      0
319 #define ENV_ANIM        1
320 #define ENV_LOAD        2
321
322 /* ok */
323 #define ENV_NORMAL      1
324 #define ENV_OSA         2
325
326 #endif
327