00001
00002
00034 #ifndef LUX_BLENDER_TEXLIB_H
00035 #define LUX_BLENDER_TEXLIB_H 1
00036
00037
00038 #include "lux.h"
00039 #include "blender_noiselib.h"
00040
00041 namespace blender
00042 {
00043
00044 #define VECCOPY(v1,v2) {*(v1)= *(v2); *(v1+1)= *(v2+1); *(v1+2)= *(v2+2);}
00045
00046 inline void VecMulf(float *v1, float f)
00047 {
00048 v1[0]*= f;
00049 v1[1]*= f;
00050 v1[2]*= f;
00051 }
00052
00053 #define BRICONT texres->tin= (texres->tin-0.5)*tex->contrast+tex->bright-0.5; \
00054 if(texres->tin<0.0) texres->tin= 0.0; else if(texres->tin>1.0) texres->tin= 1.0;
00055
00056 #define BRICONTRGB texres->tr= tex->rfac*((texres->tr-0.5)*tex->contrast+tex->bright-0.5); \
00057 if(texres->tr<0.0) texres->tr= 0.0; \
00058 texres->tg= tex->gfac*((texres->tg-0.5)*tex->contrast+tex->bright-0.5); \
00059 if(texres->tg<0.0) texres->tg= 0.0; \
00060 texres->tb= tex->bfac*((texres->tb-0.5)*tex->contrast+tex->bright-0.5); \
00061 if(texres->tb<0.0) texres->tb= 0.0;
00062
00063 typedef struct Tex {
00064 float noisesize, turbul;
00065 float bright, contrast, rfac, gfac, bfac;
00066 float filtersize;
00067
00068
00069 float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain;
00070
00071
00072 float dist_amount, ns_outscale;
00073
00074
00075 float vn_w1, vn_w2, vn_w3, vn_w4, vn_mexp;
00076 short vn_distm, vn_coltype;
00077
00078 short noisedepth, noisetype;
00079
00080
00081 short noisebasis, noisebasis2;
00082
00083 short imaflag, flag;
00084 short type, stype;
00085
00086 float cropxmin, cropymin, cropxmax, cropymax;
00087 short xrepeat, yrepeat;
00088 short extend;
00089
00090
00091 short fie_ima;
00092 int len;
00093 int frames, offset, sfra;
00094
00095 float checkerdist, nabla;
00096 float norfac;
00097 } Tex;
00098
00099
00100
00101 typedef struct TexResult {
00102 float tin, tr, tg, tb, ta;
00103 int talpha;
00104 } TexResult;
00105
00106 int multitex(const Tex *tex, const float *texvec, TexResult *texres);
00107
00108
00109
00110
00111 #define TEX_CLOUDS 1
00112 #define TEX_WOOD 2
00113 #define TEX_MARBLE 3
00114 #define TEX_MAGIC 4
00115 #define TEX_BLEND 5
00116 #define TEX_STUCCI 6
00117 #define TEX_NOISE 7
00118 #define TEX_IMAGE 8
00119 #define TEX_PLUGIN 9
00120 #define TEX_ENVMAP 10
00121 #define TEX_MUSGRAVE 11
00122 #define TEX_VORONOI 12
00123 #define TEX_DISTNOISE 13
00124
00125
00126 #define TEX_MFRACTAL 0
00127 #define TEX_RIDGEDMF 1
00128 #define TEX_HYBRIDMF 2
00129 #define TEX_FBM 3
00130 #define TEX_HTERRAIN 4
00131
00132
00133 #define TEX_BLENDER 0
00134 #define TEX_STDPERLIN 1
00135 #define TEX_NEWPERLIN 2
00136 #define TEX_VORONOI_F1 3
00137 #define TEX_VORONOI_F2 4
00138 #define TEX_VORONOI_F3 5
00139 #define TEX_VORONOI_F4 6
00140 #define TEX_VORONOI_F2F1 7
00141 #define TEX_VORONOI_CRACKLE 8
00142 #define TEX_CELLNOISE 14
00143
00144
00145 #define TEX_DISTANCE 0
00146 #define TEX_DISTANCE_SQUARED 1
00147 #define TEX_MANHATTAN 2
00148 #define TEX_CHEBYCHEV 3
00149 #define TEX_MINKOVSKY_HALF 4
00150 #define TEX_MINKOVSKY_FOUR 5
00151 #define TEX_MINKOVSKY 6
00152
00153
00154 #define TEX_INTERPOL 1
00155 #define TEX_USEALPHA 2
00156 #define TEX_MIPMAP 4
00157 #define TEX_IMAROT 16
00158 #define TEX_CALCALPHA 32
00159 #define TEX_NORMALMAP 2048
00160 #define TEX_GAUSS_MIP 4096
00161 #define TEX_FILTER_MIN 8192
00162
00163
00164 #define TEX_FIELDS_ 8
00165 #define TEX_ANIMCYCLIC_ 64
00166 #define TEX_ANIM5_ 128
00167 #define TEX_ANTIALI_ 256
00168 #define TEX_ANTISCALE_ 512
00169 #define TEX_STD_FIELD_ 1024
00170
00171
00172 #define TEX_COLORBAND 1
00173 #define TEX_FLIPBLEND 2
00174 #define TEX_NEGALPHA 4
00175 #define TEX_CHECKER_ODD 8
00176 #define TEX_CHECKER_EVEN 16
00177 #define TEX_PRV_ALPHA 32
00178 #define TEX_PRV_NOR 64
00179 #define TEX_REPEAT_XMIR 128
00180 #define TEX_REPEAT_YMIR 256
00181 #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 )
00182
00183
00184 #define TEX_EXTEND 1
00185 #define TEX_CLIP 2
00186 #define TEX_REPEAT 3
00187 #define TEX_CLIPCUBE 4
00188 #define TEX_CHECKER 5
00189
00190
00191 #define TEX_NOISESOFT 0
00192 #define TEX_NOISEPERL 1
00193
00194
00195 #define TEX_SIN 0
00196 #define TEX_SAW 1
00197 #define TEX_TRI 2
00198
00199
00200 #define TEX_BAND 0
00201 #define TEX_RING 1
00202 #define TEX_BANDNOISE 2
00203 #define TEX_RINGNOISE 3
00204
00205
00206 #define TEX_DEFAULT 0
00207 #define TEX_COLOR 1
00208
00209
00210 #define TEX_SOFT 0
00211 #define TEX_SHARP 1
00212 #define TEX_SHARPER 2
00213
00214
00215 #define TEX_LIN 0
00216 #define TEX_QUAD 1
00217 #define TEX_EASE 2
00218 #define TEX_DIAG 3
00219 #define TEX_SPHERE 4
00220 #define TEX_HALO 5
00221 #define TEX_RAD 6
00222
00223
00224 #define TEX_PLASTIC 0
00225 #define TEX_WALLIN 1
00226 #define TEX_WALLOUT 2
00227
00228
00229 #define TEX_INTENSITY 0
00230 #define TEX_COL1 1
00231 #define TEX_COL2 2
00232 #define TEX_COL3 3
00233
00234
00235 #define MTEX_NSPACE_CAMERA 0
00236 #define MTEX_NSPACE_WORLD 1
00237 #define MTEX_NSPACE_OBJECT 2
00238 #define MTEX_NSPACE_TANGENT 3
00239
00240
00241 #define MTEX_FLAT 0
00242 #define MTEX_CUBE 1
00243 #define MTEX_TUBE 2
00244 #define MTEX_SPHERE 3
00245
00246
00247 #define TEX_INT 0
00248 #define TEX_RGB 1
00249
00250 }
00251
00252 #endif // LUX_BLENDER_TEXLIB_H