All pastes #916046 Raw Edit

Anonymous

public text v1 · immutable
#916046 ·published 2008-02-24 08:37 UTC
rendered paste body
/**
 * blenlib/DNA_texture_types.h (mar-2001 nzc)
 *
 * $Id: DNA_texture_types.h 13192 2008-01-10 11:26:17Z ton $ 
 *
 * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version. The Blender
 * Foundation also sells licenses for use in proprietary software under
 * the Blender License.  See http://www.blender.org/BL/ for information
 * about this.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
 * All rights reserved.
 *
 * The Original Code is: all of this file.
 *
 * Contributor(s): none yet.
 *
 * ***** END GPL/BL DUAL LICENSE BLOCK *****
 */
#ifndef DNA_TEXTURE_TYPES_H
#define DNA_TEXTURE_TYPES_H

#include "DNA_ID.h"
#include "DNA_image_types.h"

struct Ipo;
struct PluginTex;
struct ColorBand;
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, pmapto, pmaptoneg;
	short normapspace, pad[3];
	float r, g, b, k;
	float def_var, rt;
	
	float colfac, norfac, varfac;
	float dispfac; 
	float warpfac; 
	
} 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 PluginTex {
	char name[160];
	void *handle;
	
	char *pname;
	char *stnames;

	int stypes;
	int vars;
	void *varstr;
	float *result;
	float *cfra;
	
	float data[32];

	int (*doit)(void);
	void (*instance_init)(void *);

	/* should be void (*)(unsigned short)... patched */	
	void (*callback)(dna_ushort_fix);
	
	int version, pad;
} PluginTex;

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 flag, tot, cur, ipotype;
	CBData data[32];
	
} ColorBand;

typedef struct EnvMap {
	struct Object *object;
	struct Image *ima;		/* type ENV_LOAD */
	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;
	short cuberes, depth;
	int ok, lastframe;
	short recalc, lastsize;
} EnvMap;

/* --------------------------------------- Tiles Specific ---------------------------------------------- */
typedef struct TexPreCalc {
	float hpat[16];			/* Stores horizontal tile pattern */
	float vpat[16];			/* Stores vertical tile pattern */
	float bpat[16][16];		/* Stores the bump pattern */
	float minw, minh;		/* Store overall min of width and height value */
	float maxw, maxh;		/* Store overall max of width and height value */
	float r[16][16];		/* Store colour pattern */
	float g[16][16];
	float b[16][16];
	float rpat[16];			/* Stores the random numbers for anything else */
	float hgap, vgap;		/* Stores gap values scaled by overall size of pattern */
} TexPreCalc;
/* --------------------------------------- Tiles Specific ---------------------------------------------- */

typedef struct Tex {
	ID id;
	
	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;

	short hcount, vcount, smooth;
	short corner, pattern, bevoption;
	float scale;
	float width, widthvar, height, heightvar, bump, bumpvar;
	float curve;
	float hgap, vgap, shift, bevel, strength;
	float colr1, colg1, colb1, colr2, colg2, colb2, fhue, fsat, fval;
	float hcorner, vcorner;
	unsigned int seed, alternate;
	short seamless, bevelshading;
	struct TexPreCalc precalc;

	float cropxmin, cropymin, cropxmax, cropymax;
	short xrepeat, yrepeat;
	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;
	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 */
#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
#define TEX_ENVMAP		10
#define TEX_MUSGRAVE	11
#define TEX_VORONOI		12
#define TEX_DISTNOISE	13
#define TEX_TILES		14

/* 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_IMAROT		16
#define TEX_CALCALPHA	32
#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
#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 - corner types */
#define TEX_CORNER_ROUND		0
#define TEX_CORNER_ROUND_INV	1
#define TEX_CORNER_ELLIPSE		2
#define TEX_CORNER_ELLIPSE_INV	3
#define TEX_CORNER_STRAIGHT		4

#define TEX_TILES_NONE			0
#define TEX_TILES_INTERLOCK1	1
#define TEX_TILES_HEX			2
#define TEX_TILES_HERRINGBONE1	3
#define TEX_TILES_HERRINGBONE2	4
#define TEX_TILES_HERRINGBONE3	5
#define TEX_TILES_WEAVE			6
#define TEX_TILES_INTERLOCK2	7
#define TEX_TILES_INTERLOCK3	8
#define TEX_TILES_INTERLOCK4	9
#define TEX_TILES_CROSS1		10
#define TEX_TILES_CROSS2		11
#define TEX_TILES_STAR1			12

#define TEX_BEVEL_DEFAULTMIN	0
#define TEX_BEVEL_UNIFORMMIN	1
#define TEX_BEVEL_UNIFORMMAX	2

#define TEX_BEVEL_DEFAULT		0
#define TEX_BEVEL_PATTERN		1 /* Used for predefined pattern so they can do what they want */
#define TEX_BEVEL_HGRADIENT		2
#define TEX_BEVEL_VGRADIENT		3

/* 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
#define TEX_NOR		2

/* **************** MTEX ********************* */

/* proj */
#define PROJ_N			0
#define PROJ_X			1
#define PROJ_Y			2
#define PROJ_Z			3

/* texflag */
#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 ********************* */

/* type */
#define ENV_CUBE	0
#define ENV_PLANE	1
#define ENV_SPHERE	2

/* stype */
#define ENV_STATIC	0
#define ENV_ANIM	1
#define ENV_LOAD	2

/* ok */
#define ENV_NORMAL	1
#define ENV_OSA		2

#endif