Cleanup: Remove unused MTex.texflag
[blender.git] / source / blender / makesdna / DNA_texture_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_texture_types.h
29  *  \ingroup DNA
30  *  \since mar-2001
31  *  \author nzc
32  */
33
34 #ifndef __DNA_TEXTURE_TYPES_H__
35 #define __DNA_TEXTURE_TYPES_H__
36
37 #include "DNA_defs.h"
38 #include "DNA_ID.h"
39 #include "DNA_image_types.h" /* ImageUser */
40
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44
45 struct AnimData;
46 struct ColorBand;
47 struct CurveMapping;
48 struct ImBuf;
49 struct Image;
50 struct Ipo;
51 struct Object;
52 struct PreviewImage;
53 struct Tex;
54
55 typedef struct MTex {
56
57         short texco, mapto, maptoneg, blendtype;
58         struct Object *object;
59         struct Tex *tex;
60         /** MAX_CUSTOMDATA_LAYER_NAME. */
61         char uvname[64];
62
63         char projx, projy, projz, mapping;
64         char brush_map_mode, brush_angle_mode;
65         char pad[2];
66         float ofs[3], size[3], rot, random_angle;
67
68         char _pad0[2];
69         short colormodel, pmapto, pmaptoneg;
70         short normapspace, which_output;
71         float r, g, b, k;
72         float def_var, rt;
73
74         /* common */
75         float colfac, varfac;
76
77         /* material */
78         float norfac, dispfac, warpfac;
79         float colspecfac, mirrfac, alphafac;
80         float difffac, specfac, emitfac, hardfac;
81         float raymirrfac, translfac, ambfac;
82         float colemitfac, colreflfac, coltransfac;
83         float densfac, scatterfac, reflfac;
84
85         /* particles */
86         float timefac, lengthfac, clumpfac, dampfac;
87         float kinkfac, kinkampfac, roughfac, padensfac, gravityfac;
88         float lifefac, sizefac, ivelfac, fieldfac;
89         float twistfac;
90
91         /* lamp */
92         float shadowfac;
93
94         /* world */
95         float zenupfac, zendownfac, blendfac;
96 } MTex;
97
98 #ifndef DNA_USHORT_FIX
99 #define DNA_USHORT_FIX
100 /**
101  * \deprecated This typedef serves to avoid badly typed functions when
102  * \deprecated compiling while delivering a proper dna.c. Do not use
103  * \deprecated it in any case.
104  */
105 typedef unsigned short dna_ushort_fix;
106 #endif
107
108 typedef struct CBData {
109         float r, g, b, a, pos;
110         int cur;
111 } CBData;
112
113 /* 32 = MAXCOLORBAND */
114 /* note that this has to remain a single struct, for UserDef */
115 typedef struct ColorBand {
116         short tot, cur;
117         char ipotype, ipotype_hue;
118         char color_mode;
119         char pad[1];
120
121         CBData data[32];
122 } ColorBand;
123
124 typedef struct PointDensity {
125         short flag;
126
127         short falloff_type;
128         float falloff_softness;
129         float radius;
130         short source;
131         short pad0;
132
133         /** psys_color_source */
134         short color_source;
135         short ob_color_source;
136
137         int totpoints;
138
139         /** for 'Object' or 'Particle system' type - source object */
140         struct Object *object;
141         /** index+1 in ob.particlesystem, non-ID pointer not allowed */
142         int psys;
143         /** cache points in worldspace, object space, ... ? */
144         short psys_cache_space;
145         /** cache points in worldspace, object space, ... ? */
146         short ob_cache_space;
147         /** vertex attribute layer for color source, MAX_CUSTOMDATA_LAYER_NAME */
148         char vertex_attribute_name[64];
149
150         /** The acceleration tree containing points. */
151         void *point_tree;
152         /** Dynamically allocated extra for extra information, like particle age. */
153         float *point_data;
154
155         float noise_size;
156         short noise_depth;
157         short noise_influence;
158         short noise_basis;
159         short pad1[3];
160         float noise_fac;
161
162         float speed_scale, falloff_speed_scale, pad2;
163         /** For time -> color */
164         struct ColorBand *coba;
165
166         /** Falloff density curve. */
167         struct CurveMapping *falloff_curve;
168 } PointDensity;
169
170 typedef struct Tex {
171         ID id;
172         /** Animation data (must be immediately after id for utilities to use it). */
173         struct AnimData *adt;
174
175         float noisesize, turbul;
176         float bright, contrast, saturation, rfac, gfac, bfac;
177         float filtersize, pad2;
178
179         /* newnoise: musgrave parameters */
180         float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain;
181
182         /* newnoise: distorted noise amount, musgrave & voronoi output scale */
183         float dist_amount, ns_outscale;
184
185         /* newnoise: voronoi nearest neighbor weights, minkovsky exponent,
186          * distance metric & color type */
187         float vn_w1;
188         float vn_w2;
189         float vn_w3;
190         float vn_w4;
191         float vn_mexp;
192         short vn_distm, vn_coltype;
193
194         /* noisedepth MUST be <= 30 else we get floating point exceptions */
195         short noisedepth, noisetype;
196
197         /* newnoise: noisebasis type for clouds/marble/etc, noisebasis2 only used for distorted noise */
198         short noisebasis, noisebasis2;
199
200         short imaflag, flag;
201         short type, stype;
202
203         float cropxmin, cropymin, cropxmax, cropymax;
204         int texfilter;
205         int afmax;      // anisotropic filter maximum value, ewa -> max eccentricity, feline -> max probes
206         short xrepeat, yrepeat;
207         short extend;
208
209         /* variables disabled, moved to struct iuser */
210         short _pad0;
211         int len;
212         int frames, offset, sfra;
213
214         float checkerdist, nabla;
215         float pad1;
216
217         struct ImageUser iuser;
218
219         struct bNodeTree *nodetree;
220         /* old animation system, deprecated for 2.5 */
221         struct Ipo *ipo  DNA_DEPRECATED;
222         struct Image *ima;
223         struct ColorBand *coba;
224         struct PreviewImage *preview;
225
226         char use_nodes;
227         char pad[7];
228
229 } Tex;
230
231 /* used for mapping and texture nodes. note: rot is now in radians */
232
233 typedef struct TexMapping {
234         float loc[3], rot[3], size[3];
235         int flag;
236         char projx, projy, projz, mapping;
237         int type;
238
239         float mat[4][4];
240         float min[3], max[3];
241         struct Object *ob;
242
243 } TexMapping;
244
245 typedef struct ColorMapping {
246         struct ColorBand coba;
247
248         float bright, contrast, saturation;
249         int flag;
250
251         float blend_color[3];
252         float blend_factor;
253         int blend_type, pad[3];
254 } ColorMapping;
255
256 /* texmap->flag */
257 #define TEXMAP_CLIP_MIN         1
258 #define TEXMAP_CLIP_MAX         2
259 #define TEXMAP_UNIT_MATRIX      4
260
261 /* texmap->type */
262 #define TEXMAP_TYPE_POINT               0
263 #define TEXMAP_TYPE_TEXTURE             1
264 #define TEXMAP_TYPE_VECTOR              2
265 #define TEXMAP_TYPE_NORMAL              3
266
267 /* colormap->flag */
268 #define COLORMAP_USE_RAMP 1
269
270 /* **************** TEX ********************* */
271
272 /* type */
273 #define TEX_CLOUDS              1
274 #define TEX_WOOD                2
275 #define TEX_MARBLE              3
276 #define TEX_MAGIC               4
277 #define TEX_BLEND               5
278 #define TEX_STUCCI              6
279 #define TEX_NOISE               7
280 #define TEX_IMAGE               8
281 //#define TEX_PLUGIN            9 /* Deprecated */
282 //#define TEX_ENVMAP            10 /* Deprecated */
283 #define TEX_MUSGRAVE    11
284 #define TEX_VORONOI             12
285 #define TEX_DISTNOISE   13
286 //#define TEX_POINTDENSITY      14 /* Deprecated */
287 //#define TEX_VOXELDATA         15 /* Deprecated */
288 //#define TEX_OCEAN                     16 /* Deprecated */
289
290 /* musgrave stype */
291 #define TEX_MFRACTAL            0
292 #define TEX_RIDGEDMF            1
293 #define TEX_HYBRIDMF            2
294 #define TEX_FBM                         3
295 #define TEX_HTERRAIN            4
296
297 /* newnoise: noisebasis 1 & 2 */
298 #define TEX_BLENDER                     0
299 #define TEX_STDPERLIN           1
300 #define TEX_NEWPERLIN           2
301 #define TEX_VORONOI_F1          3
302 #define TEX_VORONOI_F2          4
303 #define TEX_VORONOI_F3          5
304 #define TEX_VORONOI_F4          6
305 #define TEX_VORONOI_F2F1        7
306 #define TEX_VORONOI_CRACKLE             8
307 #define TEX_CELLNOISE           14
308
309 /* newnoise: Voronoi distance metrics, vn_distm */
310 #define TEX_DISTANCE            0
311 #define TEX_DISTANCE_SQUARED            1
312 #define TEX_MANHATTAN           2
313 #define TEX_CHEBYCHEV           3
314 #define TEX_MINKOVSKY_HALF              4
315 #define TEX_MINKOVSKY_FOUR              5
316 #define TEX_MINKOVSKY           6
317
318 /* imaflag */
319 #define TEX_INTERPOL    (1 << 0)
320 #define TEX_USEALPHA    (1 << 1)
321 #define TEX_MIPMAP              (1 << 2)
322 #define TEX_IMAROT              (1 << 4)
323 #define TEX_CALCALPHA   (1 << 5)
324 #define TEX_NORMALMAP   (1 << 11)
325 #define TEX_GAUSS_MIP   (1 << 12)
326 #define TEX_FILTER_MIN  (1 << 13)
327 #define TEX_DERIVATIVEMAP       (1 << 14)
328
329 /* texfilter */
330 // TXF_BOX -> blender's old texture filtering method
331 #define TXF_BOX                 0
332 #define TXF_EWA                 1
333 #define TXF_FELINE              2
334 #define TXF_AREA                3
335
336 /* flag */
337 #define TEX_COLORBAND       (1 << 0)
338 #define TEX_FLIPBLEND       (1 << 1)
339 #define TEX_NEGALPHA        (1 << 2)
340 #define TEX_CHECKER_ODD     (1 << 3)
341 #define TEX_CHECKER_EVEN    (1 << 4)
342 #define TEX_PRV_ALPHA       (1 << 5)
343 #define TEX_PRV_NOR         (1 << 6)
344 #define TEX_REPEAT_XMIR     (1 << 7)
345 #define TEX_REPEAT_YMIR     (1 << 8)
346 #define TEX_FLAG_MASK       (TEX_COLORBAND | TEX_FLIPBLEND | TEX_NEGALPHA | TEX_CHECKER_ODD | TEX_CHECKER_EVEN | TEX_PRV_ALPHA | TEX_PRV_NOR | TEX_REPEAT_XMIR | TEX_REPEAT_YMIR)
347 #define TEX_DS_EXPAND       (1 << 9)
348 #define TEX_NO_CLAMP        (1 << 10)
349
350 /* extend (starts with 1 because of backward comp.) */
351 #define TEX_EXTEND              1
352 #define TEX_CLIP                2
353 #define TEX_REPEAT              3
354 #define TEX_CLIPCUBE    4
355 #define TEX_CHECKER             5
356
357 /* noisetype */
358 #define TEX_NOISESOFT   0
359 #define TEX_NOISEPERL   1
360
361 /* tex->noisebasis2 in texture.c - wood waveforms */
362 #define TEX_SIN                 0
363 #define TEX_SAW                 1
364 #define TEX_TRI                 2
365
366 /* tex->stype in texture.c - wood types */
367 #define TEX_BAND                0
368 #define TEX_RING                1
369 #define TEX_BANDNOISE   2
370 #define TEX_RINGNOISE   3
371
372 /* tex->stype in texture.c - cloud types */
373 #define TEX_DEFAULT             0
374 #define TEX_COLOR               1
375
376 /* tex->stype in texture.c - marble types */
377 #define TEX_SOFT                0
378 #define TEX_SHARP               1
379 #define TEX_SHARPER             2
380
381 /* tex->stype in texture.c - blend types */
382 #define TEX_LIN                 0
383 #define TEX_QUAD                1
384 #define TEX_EASE                2
385 #define TEX_DIAG                3
386 #define TEX_SPHERE              4
387 #define TEX_HALO                5
388 #define TEX_RAD                 6
389
390 /* tex->stype in texture.c - stucci types */
391 #define TEX_PLASTIC             0
392 #define TEX_WALLIN              1
393 #define TEX_WALLOUT             2
394
395 /* tex->stype in texture.c - voronoi types */
396 #define TEX_INTENSITY   0
397 #define TEX_COL1                1
398 #define TEX_COL2                2
399 #define TEX_COL3                3
400
401 /* mtex->normapspace */
402 #define MTEX_NSPACE_CAMERA      0
403 #define MTEX_NSPACE_WORLD       1
404 #define MTEX_NSPACE_OBJECT      2
405 #define MTEX_NSPACE_TANGENT     3
406
407 /* wrap */
408 #define MTEX_FLAT               0
409 #define MTEX_CUBE               1
410 #define MTEX_TUBE               2
411 #define MTEX_SPHERE             3
412
413 /* return value */
414 #define TEX_INT         0
415 #define TEX_RGB         1
416 #define TEX_NOR         2
417
418 /* pr_texture in material, world, lamp, */
419 #define TEX_PR_TEXTURE  0
420 #define TEX_PR_OTHER    1
421 #define TEX_PR_BOTH             2
422
423 /* **************** MTEX ********************* */
424
425 /* proj */
426 #define PROJ_N                  0
427 #define PROJ_X                  1
428 #define PROJ_Y                  2
429 #define PROJ_Z                  3
430
431 /* blendtype */
432 #define MTEX_BLEND              0
433 #define MTEX_MUL                1
434 #define MTEX_ADD                2
435 #define MTEX_SUB                3
436 #define MTEX_DIV                4
437 #define MTEX_DARK               5
438 #define MTEX_DIFF               6
439 #define MTEX_LIGHT              7
440 #define MTEX_SCREEN             8
441 #define MTEX_OVERLAY    9
442 #define MTEX_BLEND_HUE          10
443 #define MTEX_BLEND_SAT          11
444 #define MTEX_BLEND_VAL          12
445 #define MTEX_BLEND_COLOR        13
446 #define MTEX_SOFT_LIGHT     15
447 #define MTEX_LIN_LIGHT      16
448
449 /* brush_map_mode */
450 #define MTEX_MAP_MODE_VIEW     0
451 #define MTEX_MAP_MODE_TILED    1
452 #define MTEX_MAP_MODE_3D       2
453 #define MTEX_MAP_MODE_AREA     3
454 #define MTEX_MAP_MODE_RANDOM   4
455 #define MTEX_MAP_MODE_STENCIL  5
456
457 /* brush_angle_mode */
458 #define MTEX_ANGLE_RANDOM      1
459 #define MTEX_ANGLE_RAKE        2
460
461 /* **************** ColorBand ********************* */
462
463 /* colormode */
464 enum {
465         COLBAND_BLEND_RGB   = 0,
466         COLBAND_BLEND_HSV   = 1,
467         COLBAND_BLEND_HSL   = 2,
468 };
469
470 /* interpolation */
471 enum {
472         COLBAND_INTERP_LINEAR       = 0,
473         COLBAND_INTERP_EASE         = 1,
474         COLBAND_INTERP_B_SPLINE     = 2,
475         COLBAND_INTERP_CARDINAL     = 3,
476         COLBAND_INTERP_CONSTANT     = 4,
477 };
478
479 /* color interpolation */
480 enum {
481         COLBAND_HUE_NEAR    = 0,
482         COLBAND_HUE_FAR     = 1,
483         COLBAND_HUE_CW      = 2,
484         COLBAND_HUE_CCW     = 3,
485 };
486
487 /* **************** PointDensity ********************* */
488
489 /* source */
490 #define TEX_PD_PSYS                     0
491 #define TEX_PD_OBJECT           1
492 #define TEX_PD_FILE                     2
493
494 /* falloff_type */
495 #define TEX_PD_FALLOFF_STD              0
496 #define TEX_PD_FALLOFF_SMOOTH   1
497 #define TEX_PD_FALLOFF_SOFT             2
498 #define TEX_PD_FALLOFF_CONSTANT 3
499 #define TEX_PD_FALLOFF_ROOT             4
500 #define TEX_PD_FALLOFF_PARTICLE_AGE 5
501 #define TEX_PD_FALLOFF_PARTICLE_VEL 6
502
503 /* psys_cache_space */
504 #define TEX_PD_OBJECTLOC        0
505 #define TEX_PD_OBJECTSPACE      1
506 #define TEX_PD_WORLDSPACE       2
507
508 /* flag */
509 #define TEX_PD_TURBULENCE               1
510 #define TEX_PD_FALLOFF_CURVE    2
511
512 /* noise_influence */
513 #define TEX_PD_NOISE_STATIC             0
514 /* #define TEX_PD_NOISE_VEL             1 */ /* Deprecated */
515 /* #define TEX_PD_NOISE_AGE             2 */ /* Deprecated */
516 /* #define TEX_PD_NOISE_TIME    3 */ /* Deprecated */
517
518 /* color_source */
519 enum {
520         TEX_PD_COLOR_CONSTANT   = 0,
521         /* color_source: particles */
522         TEX_PD_COLOR_PARTAGE    = 1,
523         TEX_PD_COLOR_PARTSPEED  = 2,
524         TEX_PD_COLOR_PARTVEL    = 3,
525         /* color_source: vertices */
526         TEX_PD_COLOR_VERTCOL    = 1,
527         TEX_PD_COLOR_VERTWEIGHT = 2,
528         TEX_PD_COLOR_VERTNOR    = 3,
529 };
530
531 #define POINT_DATA_VEL          1
532 #define POINT_DATA_LIFE         2
533 #define POINT_DATA_COLOR        4
534
535 #ifdef __cplusplus
536 }
537 #endif
538
539 #endif