/* SPDX-License-Identifier: GPL-2.0-or-later * Copyright 2001-2002 NaN Holding BV. All rights reserved. */ /** \file * \ingroup DNA */ #pragma once #include "DNA_ID.h" #include "DNA_defs.h" #include "DNA_image_types.h" /* ImageUser */ #ifdef __cplusplus extern "C" { #endif struct AnimData; struct ColorBand; struct CurveMapping; struct Image; struct Ipo; struct Object; struct PreviewImage; struct Tex; typedef struct MTex { DNA_DEFINE_CXX_METHODS(MTex) short texco, mapto, maptoneg, blendtype; struct Object *object; struct Tex *tex; /** MAX_CUSTOMDATA_LAYER_NAME. */ char uvname[64]; char projx, projy, projz, mapping; char brush_map_mode, brush_angle_mode; char _pad[2]; float ofs[3], size[3], rot, random_angle; char _pad0[2]; short colormodel; short normapspace, which_output; float r, g, b, k; float def_var; /* common */ float colfac, varfac; /* material */ float norfac, dispfac, warpfac; float colspecfac, mirrfac, alphafac; float difffac, specfac, emitfac, hardfac; float raymirrfac, translfac, ambfac; float colemitfac, colreflfac, coltransfac; float densfac, scatterfac, reflfac; /* particles */ float timefac, lengthfac, clumpfac, dampfac; float kinkfac, kinkampfac, roughfac, padensfac, gravityfac; float lifefac, sizefac, ivelfac, fieldfac; float twistfac; /* light */ float shadowfac; /* world */ float zenupfac, zendownfac, blendfac; } MTex; #ifndef DNA_USHORT_FIX # define DNA_USHORT_FIX /** * \deprecated This typedef serves to avoid badly typed functions when * \deprecated compiling while delivering a proper dna.c. Do not use * \deprecated it in any case. */ typedef unsigned short dna_ushort_fix; #endif typedef struct CBData { float r, g, b, a, pos; int cur; } CBData; /** * 32 = #MAXCOLORBAND * \note that this has to remain a single struct, for UserDef. */ typedef struct ColorBand { short tot, cur; char ipotype, ipotype_hue; char color_mode; char _pad[1]; CBData data[32]; } ColorBand; typedef struct PointDensity { DNA_DEFINE_CXX_METHODS(PointDensity) short flag; short falloff_type; float falloff_softness; float radius; short source; char _pad0[2]; /** psys_color_source */ short color_source; short ob_color_source; int totpoints; /** for 'Object' or 'Particle system' type - source object */ struct Object *object; /** `index + 1` in ob.particle-system, non-ID pointer not allowed. */ int psys; /** cache points in world-space, object space, ... ? */ short psys_cache_space; /** cache points in world-space, object space, ... ? */ short ob_cache_space; /** vertex attribute layer for color source, MAX_CUSTOMDATA_LAYER_NAME */ char vertex_attribute_name[64]; /** The acceleration tree containing points. */ void *point_tree; /** Dynamically allocated extra for extra information, like particle age. */ float *point_data; float noise_size; short noise_depth; short noise_influence; short noise_basis; char _pad1[6]; float noise_fac; float speed_scale, falloff_speed_scale; char _pad2[4]; /** For time -> color */ struct ColorBand *coba; /** Falloff density curve. */ struct CurveMapping *falloff_curve; } PointDensity; typedef struct Tex { DNA_DEFINE_CXX_METHODS(Tex) ID id; /** Animation data (must be immediately after id for utilities to use it). */ struct AnimData *adt; float noisesize, turbul; float bright, contrast, saturation, rfac, gfac, bfac; float filtersize; char _pad2[4]; /* newnoise: musgrave parameters */ float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain; /* newnoise: distorted noise amount, musgrave & voronoi output scale */ float dist_amount, ns_outscale; /* newnoise: voronoi nearest neighbor weights, minkovsky exponent, * distance metric & color type */ float vn_w1; float vn_w2; float vn_w3; float vn_w4; float vn_mexp; short vn_distm, vn_coltype; /* noisedepth MUST be <= 30 else we get floating point exceptions */ 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; int texfilter; int afmax; /* anisotropic filter maximum value, ewa -> max eccentricity, feline -> max probes */ short xrepeat, yrepeat; short extend; /* variables disabled, moved to struct iuser */ short _pad0; int len; int frames, offset, sfra; float checkerdist, nabla; char _pad1[4]; struct ImageUser iuser; struct bNodeTree *nodetree; /* old animation system, deprecated for 2.5 */ struct Ipo *ipo DNA_DEPRECATED; struct Image *ima; struct ColorBand *coba; struct PreviewImage *preview; char use_nodes; char _pad[7]; } Tex; /** Used for mapping and texture nodes. */ typedef struct TexMapping { float loc[3]; /** Rotation in radians. */ float rot[3]; float size[3]; int flag; char projx, projy, projz, mapping; int type; float mat[4][4]; float min[3], max[3]; struct Object *ob; } TexMapping; typedef struct ColorMapping { struct ColorBand coba; float bright, contrast, saturation; int flag; float blend_color[3]; float blend_factor; int blend_type; char _pad[4]; } ColorMapping; /* texmap->flag */ #define TEXMAP_CLIP_MIN 1 #define TEXMAP_CLIP_MAX 2 #define TEXMAP_UNIT_MATRIX 4 /* texmap->type */ #define TEXMAP_TYPE_POINT 0 #define TEXMAP_TYPE_TEXTURE 1 #define TEXMAP_TYPE_VECTOR 2 #define TEXMAP_TYPE_NORMAL 3 /* colormap->flag */ #define COLORMAP_USE_RAMP 1 /* **************** TEX ********************* */ /* type */ #define TEX_CLOUDS 1 #define TEX_WOOD 2 #define TEX_MARBLE 3 #define TEX_MAGIC 4 #define TEX_BLEND 5 #define TEX_STUCCI 6 #define TEX_NOISE 7 #define TEX_IMAGE 8 //#define TEX_PLUGIN 9 /* Deprecated */ //#define TEX_ENVMAP 10 /* Deprecated */ #define TEX_MUSGRAVE 11 #define TEX_VORONOI 12 #define TEX_DISTNOISE 13 //#define TEX_POINTDENSITY 14 /* Deprecated */ //#define TEX_VOXELDATA 15 /* Deprecated */ //#define TEX_OCEAN 16 /* Deprecated */ /* 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 << 0) #define TEX_USEALPHA (1 << 1) #define TEX_MIPMAP (1 << 2) #define TEX_IMAROT (1 << 4) #define TEX_CALCALPHA (1 << 5) #define TEX_NORMALMAP (1 << 11) #define TEX_GAUSS_MIP (1 << 12) #define TEX_FILTER_MIN (1 << 13) #define TEX_DERIVATIVEMAP (1 << 14) /* texfilter */ #define TXF_BOX 0 /* Blender's old texture filtering method. */ #define TXF_EWA 1 #define TXF_FELINE 2 #define TXF_AREA 3 /* flag */ #define TEX_COLORBAND (1 << 0) #define TEX_FLIPBLEND (1 << 1) #define TEX_NEGALPHA (1 << 2) #define TEX_CHECKER_ODD (1 << 3) #define TEX_CHECKER_EVEN (1 << 4) #define TEX_PRV_ALPHA (1 << 5) #define TEX_PRV_NOR (1 << 6) #define TEX_REPEAT_XMIR (1 << 7) #define TEX_REPEAT_YMIR (1 << 8) #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) #define TEX_DS_EXPAND (1 << 9) #define TEX_NO_CLAMP (1 << 10) /* 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 #define MTEX_TUBE 2 #define MTEX_SPHERE 3 /* return value */ #define TEX_INT 0 #define TEX_RGB 1 /* pr_texture in material, world, light. */ #define TEX_PR_TEXTURE 0 #define TEX_PR_OTHER 1 #define TEX_PR_BOTH 2 /* **************** MTEX ********************* */ /* proj */ #define PROJ_N 0 #define PROJ_X 1 #define PROJ_Y 2 #define PROJ_Z 3 /* 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 #define MTEX_SOFT_LIGHT 15 #define MTEX_LIN_LIGHT 16 /* brush_map_mode */ #define MTEX_MAP_MODE_VIEW 0 #define MTEX_MAP_MODE_TILED 1 #define MTEX_MAP_MODE_3D 2 #define MTEX_MAP_MODE_AREA 3 #define MTEX_MAP_MODE_RANDOM 4 #define MTEX_MAP_MODE_STENCIL 5 /* brush_angle_mode */ #define MTEX_ANGLE_RANDOM 1 #define MTEX_ANGLE_RAKE 2 /* **************** ColorBand ********************* */ /** color-mode. */ enum { COLBAND_BLEND_RGB = 0, COLBAND_BLEND_HSV = 1, COLBAND_BLEND_HSL = 2, }; /** Interpolation. */ enum { COLBAND_INTERP_LINEAR = 0, COLBAND_INTERP_EASE = 1, COLBAND_INTERP_B_SPLINE = 2, COLBAND_INTERP_CARDINAL = 3, COLBAND_INTERP_CONSTANT = 4, }; /** Color interpolation. */ enum { COLBAND_HUE_NEAR = 0, COLBAND_HUE_FAR = 1, COLBAND_HUE_CW = 2, COLBAND_HUE_CCW = 3, }; /* **************** PointDensity ********************* */ /* source */ #define TEX_PD_PSYS 0 #define TEX_PD_OBJECT 1 #define TEX_PD_FILE 2 /* falloff_type */ #define TEX_PD_FALLOFF_STD 0 #define TEX_PD_FALLOFF_SMOOTH 1 #define TEX_PD_FALLOFF_SOFT 2 #define TEX_PD_FALLOFF_CONSTANT 3 #define TEX_PD_FALLOFF_ROOT 4 #define TEX_PD_FALLOFF_PARTICLE_AGE 5 #define TEX_PD_FALLOFF_PARTICLE_VEL 6 /* psys_cache_space */ #define TEX_PD_OBJECTLOC 0 #define TEX_PD_OBJECTSPACE 1 #define TEX_PD_WORLDSPACE 2 /* flag */ #define TEX_PD_TURBULENCE 1 #define TEX_PD_FALLOFF_CURVE 2 /* noise_influence */ #define TEX_PD_NOISE_STATIC 0 /* #define TEX_PD_NOISE_VEL 1 */ /* Deprecated */ /* #define TEX_PD_NOISE_AGE 2 */ /* Deprecated */ /* #define TEX_PD_NOISE_TIME 3 */ /* Deprecated */ /** color_source. */ enum { TEX_PD_COLOR_CONSTANT = 0, /* color_source: particles */ TEX_PD_COLOR_PARTAGE = 1, TEX_PD_COLOR_PARTSPEED = 2, TEX_PD_COLOR_PARTVEL = 3, /* color_source: vertices */ TEX_PD_COLOR_VERTCOL = 1, TEX_PD_COLOR_VERTWEIGHT = 2, TEX_PD_COLOR_VERTNOR = 3, }; #define POINT_DATA_VEL 1 #define POINT_DATA_LIFE 2 #define POINT_DATA_COLOR 4 #ifdef __cplusplus } #endif