Two bugfixes:
[blender.git] / source / blender / makesdna / DNA_texture_types.h
index 9a222850519fa2c12678425fd88bb50bbbb28e2d..bc2b0521d4f65dde07ebb5db011e2178faa90921 100644 (file)
@@ -35,6 +35,7 @@
 #define DNA_TEXTURE_TYPES_H
 
 #include "DNA_ID.h"
+#include "DNA_image_types.h"
 
 struct Ipo;
 struct PluginTex;
@@ -43,21 +44,27 @@ struct EnvMap;
 struct Object;
 struct Tex;
 struct Image;
+struct PreviewImage;
+struct ImBuf;
 
 typedef struct MTex {
 
        short texco, mapto, maptoneg, blendtype;
        struct Object *object;
        struct Tex *tex;
+       char uvname[32];
        
        char projx, projy, projz, mapping;
        float ofs[3], size[3];
        
-       short texflag, colormodel;
+       short texflag, colormodel, pmapto, pmaptoneg;
+       short normapspace, pad[3];
        float r, g, b, k;
-       float def_var;
+       float def_var, rt;
        
        float colfac, norfac, varfac;
+       float dispfac; 
+       float warpfac; 
        
 } MTex;
 
@@ -87,6 +94,7 @@ typedef struct PluginTex {
        float data[32];
 
        int (*doit)(void);
+       void (*instance_init)(void *);
 
        /* should be void (*)(unsigned short)... patched */     
        void (*callback)(dna_ushort_fix);
@@ -99,22 +107,27 @@ typedef struct CBData {
        int cur;
 } CBData;
 
+/* 32 = MAXCOLORBAND */
+/* note that this has to remain a single struct, for UserDef */
 typedef struct ColorBand {
        short flag, tot, cur, ipotype;
-       CBData data[16];
+       CBData data[32];
        
 } ColorBand;
 
 typedef struct EnvMap {
        struct Object *object;
        struct Image *ima;              /* type ENV_LOAD */
-       struct Image *cube[6];          /* these images are dynamic, not part of the main struct */
+       struct ImBuf *cube[6];          /* these images are dynamic, not part of the main struct */
        float imat[4][4];
+       float obimat[3][3];
        short type, stype;
        float clipsta, clipend;
+       float viewscale;        /* viewscale is for planar envmaps to zoom in or out */
        unsigned int notlay;
-       int cuberes;
-       short ok, lastframe;
+       short cuberes, depth;
+       int ok, lastframe;
+       short recalc, lastsize;
 } EnvMap;
 
 typedef struct Tex {
@@ -123,27 +136,65 @@ typedef struct Tex {
        float noisesize, turbul;
        float bright, contrast, rfac, gfac, bfac;
        float filtersize;
+
+       /* newnoise: musgrave parameters */
+       float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain;
+
+       /* newnoise: distorted noise amount, musgrave & voronoi ouput scale */
+       float dist_amount, ns_outscale;
+
+       /* newnoise: voronoi nearest neighbour weights, minkovsky exponent, distance metric & color type */
+       float vn_w1, vn_w2, vn_w3, vn_w4, vn_mexp;
+       short vn_distm, vn_coltype;
+
        short noisedepth, noisetype;
+
+       /* newnoise: noisebasis type for clouds/marble/etc, noisebasis2 only used for distorted noise */
+       short noisebasis, noisebasis2;
        
        short imaflag, flag;
        short type, stype;
        
        float cropxmin, cropymin, cropxmax, cropymax;
        short xrepeat, yrepeat;
-       short extend, len;
-       short frames, offset, sfra, fie_ima;
-       float norfac, *nor;
+       short extend;
+
+       /* variables disabled, moved to struct iuser */
+       short fie_ima;
+       int len;
+       int frames, offset, sfra;
+       
+       float checkerdist, nabla;
+       float norfac;
+       
+       struct ImageUser iuser;
        
        struct Ipo *ipo;
        struct Image *ima;
        struct PluginTex *plugin;
        struct ColorBand *coba;
        struct EnvMap *env;
-       
-       short fradur[4][2];
+       struct PreviewImage * preview;
        
 } Tex;
 
+/* used for mapping node. note: rot is in degrees */
+
+typedef struct TexMapping {
+       float loc[3], rot[3], size[3];
+       int flag;
+       
+       float mat[4][4];
+       float min[3], max[3];
+       struct Object *ob;
+
+} TexMapping;
+
+/* texmap->flag */
+#define TEXMAP_CLIP_MIN        1
+#define TEXMAP_CLIP_MAX        2
+
+
 /* **************** TEX ********************* */
 
 /* type */
@@ -157,38 +208,125 @@ typedef struct Tex {
 #define TEX_IMAGE              8
 #define TEX_PLUGIN             9
 #define TEX_ENVMAP             10
+#define TEX_MUSGRAVE   11
+#define TEX_VORONOI            12
+#define TEX_DISTNOISE  13
+
+/* musgrave stype */
+#define TEX_MFRACTAL           0
+#define TEX_RIDGEDMF           1
+#define TEX_HYBRIDMF           2
+#define TEX_FBM                                3
+#define TEX_HTERRAIN           4
+
+/* newnoise: noisebasis 1 & 2 */
+#define TEX_BLENDER                    0
+#define TEX_STDPERLIN          1
+#define TEX_NEWPERLIN          2
+#define TEX_VORONOI_F1         3
+#define TEX_VORONOI_F2         4
+#define TEX_VORONOI_F3         5
+#define TEX_VORONOI_F4         6
+#define TEX_VORONOI_F2F1       7
+#define TEX_VORONOI_CRACKLE            8
+#define TEX_CELLNOISE          14
+
+/* newnoise: Voronoi distance metrics, vn_distm */
+#define TEX_DISTANCE           0
+#define TEX_DISTANCE_SQUARED           1
+#define TEX_MANHATTAN          2
+#define TEX_CHEBYCHEV          3
+#define TEX_MINKOVSKY_HALF             4
+#define TEX_MINKOVSKY_FOUR             5
+#define TEX_MINKOVSKY          6
 
 /* imaflag */
 #define TEX_INTERPOL   1
 #define TEX_USEALPHA   2
 #define TEX_MIPMAP             4
-#define TEX_FIELDS             8
 #define TEX_IMAROT             16
 #define TEX_CALCALPHA  32
-#define TEX_ANIMCYCLIC 64
-#define TEX_ANIM5              128
-#define TEX_ANTIALI            256
-#define TEX_ANTISCALE  512
-#define TEX_STD_FIELD  1024
-
-#define TEX_LASOPPATCH 8192
-#define TEX_MORKPATCH  16384
+#define TEX_NORMALMAP  2048
+#define TEX_GAUSS_MIP  4096
+#define TEX_FILTER_MIN 8192
+
+/* imaflag unused, only for version check */
+#define TEX_FIELDS_            8
+#define TEX_ANIMCYCLIC_        64
+#define TEX_ANIM5_             128
+#define TEX_ANTIALI_   256
+#define TEX_ANTISCALE_ 512
+#define TEX_STD_FIELD_ 1024
 
 /* flag */
-#define TEX_COLORBAND  1
-#define TEX_FLIPBLEND  2
-#define TEX_NEGALPHA   4
-
-/* extend (begint bij 1 ivm backward comp.) */
+#define TEX_COLORBAND          1
+#define TEX_FLIPBLEND          2
+#define TEX_NEGALPHA           4
+#define TEX_CHECKER_ODD                8
+#define TEX_CHECKER_EVEN       16
+#define TEX_PRV_ALPHA          32
+#define TEX_PRV_NOR                    64
+#define TEX_REPEAT_XMIR                128
+#define TEX_REPEAT_YMIR                256
+#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 ) 
+
+/* extend (starts with 1 because of backward comp.) */
 #define TEX_EXTEND             1
 #define TEX_CLIP               2
 #define TEX_REPEAT             3
 #define TEX_CLIPCUBE   4
+#define TEX_CHECKER            5
 
 /* noisetype */
 #define TEX_NOISESOFT  0
 #define TEX_NOISEPERL  1
 
+/* tex->noisebasis2 in texture.c - wood waveforms */
+#define TEX_SIN                        0
+#define TEX_SAW                        1
+#define TEX_TRI                        2
+
+/* tex->stype in texture.c - wood types */
+#define TEX_BAND               0
+#define TEX_RING               1
+#define TEX_BANDNOISE  2
+#define TEX_RINGNOISE  3
+
+/* tex->stype in texture.c - cloud types */
+#define TEX_DEFAULT            0
+#define TEX_COLOR              1
+
+/* tex->stype in texture.c - marble types */
+#define TEX_SOFT               0
+#define TEX_SHARP              1
+#define TEX_SHARPER            2
+
+/* tex->stype in texture.c - blend types */
+#define TEX_LIN                        0
+#define TEX_QUAD               1
+#define TEX_EASE               2
+#define TEX_DIAG               3
+#define TEX_SPHERE             4
+#define TEX_HALO               5
+#define TEX_RAD                        6
+
+/* tex->stype in texture.c - stucci types */
+#define TEX_PLASTIC            0
+#define TEX_WALLIN             1
+#define TEX_WALLOUT            2
+
+/* tex->stype in texture.c - voronoi types */
+#define TEX_INTENSITY  0
+#define TEX_COL1               1
+#define TEX_COL2               2
+#define TEX_COL3               3
+
+/* mtex->normapspace */
+#define MTEX_NSPACE_CAMERA     0
+#define MTEX_NSPACE_WORLD      1
+#define MTEX_NSPACE_OBJECT     2
+#define MTEX_NSPACE_TANGENT    3
+
 /* wrap */
 #define MTEX_FLAT              0
 #define MTEX_CUBE              1
@@ -200,43 +338,6 @@ typedef struct Tex {
 #define TEX_RGB                1
 #define TEX_NOR                2
 
-/* texco */
-#define TEXCO_ORCO             1
-#define TEXCO_REFL             2
-#define TEXCO_NORM             4
-#define TEXCO_GLOB             8
-#define TEXCO_UV               16
-#define TEXCO_OBJECT   32
-#define TEXCO_LAVECTOR 64
-#define TEXCO_VIEW             128
-#define TEXCO_STICKY   256
-#define TEXCO_OSA              512
-#define TEXCO_WINDOW   1024
-#define NEED_UV                        2048
-
-/* mapto */
-#define MAP_COL                        1
-#define MAP_NORM               2
-#define MAP_COLSPEC            4
-#define MAP_COLMIR             8
-#define MAP_VARS               (0xFFF0)
-#define MAP_REF                        16
-#define MAP_SPEC               32
-#define MAP_EMIT               64
-#define MAP_ALPHA              128
-#define MAP_HAR                        256
-#define MAP_XTRA               512
-
-/* pr_type */
-#define MA_FLAT                        0
-#define MA_SPHERE              1
-#define MA_CUBE                        2
-
-/* pr_back */
-#define MA_DARK                        1
-
-/* pr_lamp     */
-
 /* **************** MTEX ********************* */
 
 /* proj */
@@ -246,16 +347,28 @@ typedef struct Tex {
 #define PROJ_Z                 3
 
 /* texflag */
-#define MTEX_RGBTOINT  1
-#define MTEX_STENCIL   2
-#define MTEX_NEGATIVE  4
-#define MTEX_ALPHAMIX  8
+#define MTEX_RGBTOINT          1
+#define MTEX_STENCIL           2
+#define MTEX_NEGATIVE          4
+#define MTEX_ALPHAMIX          8
+#define MTEX_VIEWSPACE         16
+#define MTEX_DUPLI_MAPTO       32
 
 /* blendtype */
 #define MTEX_BLEND             0
 #define MTEX_MUL               1
 #define MTEX_ADD               2
 #define MTEX_SUB               3
+#define MTEX_DIV               4
+#define MTEX_DARK              5
+#define MTEX_DIFF              6
+#define MTEX_LIGHT             7
+#define MTEX_SCREEN            8
+#define MTEX_OVERLAY   9
+#define MTEX_BLEND_HUE         10
+#define MTEX_BLEND_SAT         11
+#define MTEX_BLEND_VAL         12
+#define MTEX_BLEND_COLOR       13
 
 /* **************** EnvMap ********************* */