1 /* 2 * Copyright (C) 2002 Jason Edmeades 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library 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 GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19 #ifndef __WINE_D3D8TYPES_H 20 #define __WINE_D3D8TYPES_H 21 22 #ifdef __i386__ 23 #include <pshpack4.h> 24 #endif 25 26 /***************************************************************************** 27 * Direct 3D v8 #defines 28 */ 29 30 #define D3DCLEAR_TARGET 1 31 #define D3DCLEAR_ZBUFFER 2 32 #define D3DCLEAR_STENCIL 4 33 34 #define D3DCLIPPLANE0 (1 << 0) 35 #define D3DCLIPPLANE1 (1 << 1) 36 #define D3DCLIPPLANE2 (1 << 2) 37 #define D3DCLIPPLANE3 (1 << 3) 38 #define D3DCLIPPLANE4 (1 << 4) 39 #define D3DCLIPPLANE5 (1 << 5) 40 41 #define D3DCOLOR_ARGB(a,r,g,b) ((D3DCOLOR)((((a)&0xffu)<<24)|(((r)&0xffu)<<16)|(((g)&0xffu)<<8)|((b)&0xffu))) 42 #define D3DCOLOR_COLORVALUE(r,g,b,a) D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f)) 43 #define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b) 44 #define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b) 45 46 #define D3DCS_LEFT 0x001 47 #define D3DCS_RIGHT 0x002 48 #define D3DCS_TOP 0x004 49 #define D3DCS_BOTTOM 0x008 50 #define D3DCS_FRONT 0x010 51 #define D3DCS_BACK 0x020 52 #define D3DCS_PLANE0 0x040 53 #define D3DCS_PLANE1 0x080 54 #define D3DCS_PLANE2 0x100 55 #define D3DCS_PLANE3 0x200 56 #define D3DCS_PLANE4 0x400 57 #define D3DCS_PLANE5 0x800 58 #define D3DCS_ALL 0xFFF 59 60 #define D3DFVF_TEXTUREFORMAT1 3 61 #define D3DFVF_TEXTUREFORMAT2 0 62 #define D3DFVF_TEXTUREFORMAT3 1 63 #define D3DFVF_TEXTUREFORMAT4 2 64 #define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16)) 65 #define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2) 66 #define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16)) 67 #define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16)) 68 69 #define D3DLOCK_READONLY 0x0010 70 #define D3DLOCK_NOSYSLOCK 0x0800 71 #define D3DLOCK_NOOVERWRITE 0x1000 72 #define D3DLOCK_DISCARD 0x2000 73 #define D3DLOCK_NO_DIRTY_UPDATE 0x8000 74 75 #define D3DMAXUSERCLIPPLANES 32 76 77 #define D3DRENDERSTATE_WRAPBIAS 0x80 78 79 #define D3DTSS_TCI_PASSTHRU 0x00000 80 #define D3DTSS_TCI_CAMERASPACENORMAL 0x10000 81 #define D3DTSS_TCI_CAMERASPACEPOSITION 0x20000 82 #define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 0x30000 83 84 85 #define D3DTS_WORLD D3DTS_WORLDMATRIX(0) 86 #define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1) 87 #define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2) 88 #define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3) 89 #define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256) 90 91 #define D3DUSAGE_RENDERTARGET 0x01 92 #define D3DUSAGE_DEPTHSTENCIL 0x02 93 #define D3DUSAGE_WRITEONLY 0x08 94 #define D3DUSAGE_SOFTWAREPROCESSING 0x10 95 #define D3DUSAGE_DONOTCLIP 0x20 96 #define D3DUSAGE_POINTS 0x40 97 #define D3DUSAGE_RTPATCHES 0x80 98 #define D3DUSAGE_NPATCHES 0x100 99 #define D3DUSAGE_DYNAMIC 0x200 100 101 #define D3DWRAP_U 1 102 #define D3DWRAP_V 2 103 #define D3DWRAP_W 4 104 #define D3DWRAPCOORD_0 1 105 #define D3DWRAPCOORD_1 2 106 #define D3DWRAPCOORD_2 4 107 #define D3DWRAPCOORD_3 8 108 109 #define MAX_DEVICE_IDENTIFIER_STRING 512 110 111 #define D3DFVF_RESERVED0 0x0001 112 #define D3DFVF_POSITION_MASK 0x000E 113 #define D3DFVF_XYZ 0x0002 114 #define D3DFVF_XYZRHW 0x0004 115 #define D3DFVF_XYZB1 0x0006 116 #define D3DFVF_XYZB2 0x0008 117 #define D3DFVF_XYZB3 0x000a 118 #define D3DFVF_XYZB4 0x000c 119 #define D3DFVF_XYZB5 0x000e 120 #define D3DFVF_NORMAL 0x0010 121 #define D3DFVF_PSIZE 0x0020 122 #define D3DFVF_DIFFUSE 0x0040 123 #define D3DFVF_SPECULAR 0x0080 124 #define D3DFVF_TEXCOUNT_MASK 0x0f00 125 #define D3DFVF_TEXCOUNT_SHIFT 8 126 #define D3DFVF_TEX0 0x0000 127 #define D3DFVF_TEX1 0x0100 128 #define D3DFVF_TEX2 0x0200 129 #define D3DFVF_TEX3 0x0300 130 #define D3DFVF_TEX4 0x0400 131 #define D3DFVF_TEX5 0x0500 132 #define D3DFVF_TEX6 0x0600 133 #define D3DFVF_TEX7 0x0700 134 #define D3DFVF_TEX8 0x0800 135 #define D3DFVF_LASTBETA_UBYTE4 0x1000 136 #define D3DFVF_RESERVED2 0xE000 137 138 #define D3DTA_SELECTMASK 0x0000000f 139 #define D3DTA_DIFFUSE 0x00000000 140 #define D3DTA_CURRENT 0x00000001 141 #define D3DTA_TEXTURE 0x00000002 142 #define D3DTA_TFACTOR 0x00000003 143 #define D3DTA_SPECULAR 0x00000004 144 #define D3DTA_COMPLEMENT 0x00000010 145 #define D3DTA_ALPHAREPLICATE 0x00000020 146 #define D3DTA_TEMP 0x00000005 147 148 #define D3DCOLORWRITEENABLE_RED (1L<<0) 149 #define D3DCOLORWRITEENABLE_GREEN (1L<<1) 150 #define D3DCOLORWRITEENABLE_BLUE (1L<<2) 151 #define D3DCOLORWRITEENABLE_ALPHA (1L<<3) 152 153 154 #ifndef MAKEFOURCC 155 #define MAKEFOURCC(ch0, ch1, ch2, ch3) \ 156 ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ 157 ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) 158 #endif 159 160 /**************************** 161 * Vertex Shaders Declaration 162 */ 163 164 typedef enum _D3DVSD_TOKENTYPE { 165 D3DVSD_TOKEN_NOP = 0, 166 D3DVSD_TOKEN_STREAM = 1, 167 D3DVSD_TOKEN_STREAMDATA = 2, 168 D3DVSD_TOKEN_TESSELLATOR = 3, 169 D3DVSD_TOKEN_CONSTMEM = 4, 170 D3DVSD_TOKEN_EXT = 5, 171 /* RESERVED = 6 */ 172 D3DVSD_TOKEN_END = 7, 173 D3DVSD_FORCE_DWORD = 0x7FFFFFFF 174 } D3DVSD_TOKENTYPE; 175 176 /** input registers for vertex shaders functions */ 177 /* 178 #define D3DVSDE_POSITION 0 179 #define D3DVSDE_BLENDWEIGHT 1 180 #define D3DVSDE_BLENDINDICES 2 181 #define D3DVSDE_NORMAL 3 182 #define D3DVSDE_PSIZE 4 183 #define D3DVSDE_DIFFUSE 5 184 #define D3DVSDE_SPECULAR 6 185 #define D3DVSDE_TEXCOORD0 7 186 #define D3DVSDE_TEXCOORD1 8 187 #define D3DVSDE_TEXCOORD2 9 188 #define D3DVSDE_TEXCOORD3 10 189 #define D3DVSDE_TEXCOORD4 11 190 #define D3DVSDE_TEXCOORD5 12 191 #define D3DVSDE_TEXCOORD6 13 192 #define D3DVSDE_TEXCOORD7 14 193 #define D3DVSDE_POSITION2 15 194 #define D3DVSDE_NORMAL2 16 195 */ 196 /** Address of the vertex register. 0 - 16 */ 197 typedef enum _D3DVSDE_REGISTER { 198 D3DVSDE_POSITION = 0, 199 D3DVSDE_BLENDWEIGHT = 1, 200 D3DVSDE_BLENDINDICES = 2, 201 D3DVSDE_NORMAL = 3, 202 D3DVSDE_PSIZE = 4, 203 D3DVSDE_DIFFUSE = 5, 204 D3DVSDE_SPECULAR = 6, 205 D3DVSDE_TEXCOORD0 = 7, 206 D3DVSDE_TEXCOORD1 = 8, 207 D3DVSDE_TEXCOORD2 = 9, 208 D3DVSDE_TEXCOORD3 = 10, 209 D3DVSDE_TEXCOORD4 = 11, 210 D3DVSDE_TEXCOORD5 = 12, 211 D3DVSDE_TEXCOORD6 = 13, 212 D3DVSDE_TEXCOORD7 = 14, 213 D3DVSDE_POSITION2 = 15, 214 D3DVSDE_NORMAL2 = 16 215 } D3DVSDE_REGISTER; 216 217 /** bit-field declaration for VertexRegister Type */ 218 /* 219 #define D3DVSDT_FLOAT1 0x00 220 #define D3DVSDT_FLOAT2 0x01 221 #define D3DVSDT_FLOAT3 0x02 222 #define D3DVSDT_FLOAT4 0x03 223 #define D3DVSDT_D3DCOLOR 0x04 224 #define D3DVSDT_UBYTE4 0x05 225 #define D3DVSDT_SHORT2 0x06 226 #define D3DVSDT_SHORT4 0x07 227 */ 228 typedef enum _D3DVSDT_TYPE { 229 D3DVSDT_FLOAT1 = 0x00, 230 D3DVSDT_FLOAT2 = 0x01, 231 D3DVSDT_FLOAT3 = 0x02, 232 D3DVSDT_FLOAT4 = 0x03, 233 D3DVSDT_D3DCOLOR = 0x04, 234 D3DVSDT_UBYTE4 = 0x05, 235 D3DVSDT_SHORT2 = 0x06, 236 D3DVSDT_SHORT4 = 0x07 237 } D3DVSDT_TYPE; 238 239 240 #define D3DVSD_CONSTADDRESSSHIFT 0 241 #define D3DVSD_EXTINFOSHIFT 0 242 #define D3DVSD_STREAMNUMBERSHIFT 0 243 #define D3DVSD_VERTEXREGSHIFT 0 244 #define D3DVSD_CONSTRSSHIFT 16 245 #define D3DVSD_DATATYPESHIFT 16 246 #define D3DVSD_SKIPCOUNTSHIFT 16 247 #define D3DVSD_VERTEXREGINSHIFT 20 248 #define D3DVSD_EXTCOUNTSHIFT 24 249 #define D3DVSD_CONSTCOUNTSHIFT 25 250 #define D3DVSD_DATALOADTYPESHIFT 28 251 #define D3DVSD_STREAMTESSSHIFT 28 252 #define D3DVSD_TOKENTYPESHIFT 29 253 254 #define D3DVSD_CONSTADDRESSMASK (0x7F << D3DVSD_CONSTADDRESSSHIFT) 255 #define D3DVSD_EXTINFOMASK (0xFFFFFF << D3DVSD_EXTINFOSHIFT) 256 #define D3DVSD_STREAMNUMBERMASK (0xF << D3DVSD_STREAMNUMBERSHIFT) 257 #define D3DVSD_VERTEXREGMASK (0x1F << D3DVSD_VERTEXREGSHIFT) 258 #define D3DVSD_CONSTRSMASK (0x1FFF << D3DVSD_CONSTRSSHIFT) 259 #define D3DVSD_DATATYPEMASK (0xF << D3DVSD_DATATYPESHIFT) 260 #define D3DVSD_SKIPCOUNTMASK (0xF << D3DVSD_SKIPCOUNTSHIFT) 261 #define D3DVSD_EXTCOUNTMASK (0x1F << D3DVSD_EXTCOUNTSHIFT) 262 #define D3DVSD_VERTEXREGINMASK (0xF << D3DVSD_VERTEXREGINSHIFT) 263 #define D3DVSD_CONSTCOUNTMASK (0xF << D3DVSD_CONSTCOUNTSHIFT) 264 #define D3DVSD_DATALOADTYPEMASK (0x1 << D3DVSD_DATALOADTYPESHIFT) 265 #define D3DVSD_STREAMTESSMASK (0x1 << D3DVSD_STREAMTESSSHIFT) 266 #define D3DVSD_TOKENTYPEMASK (0x7u << D3DVSD_TOKENTYPESHIFT) 267 268 269 #define D3DVSD_MAKETOKENTYPE(TokenType) \ 270 (((unsigned)TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK) 271 272 #define D3DVSD_CONST(ConstantAddress, Count) \ 273 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress)) 274 275 #define D3DVSD_END() 0xFFFFFFFF 276 277 #define D3DVSD_NOP() 0x00000000 278 279 #define D3DVSD_REG(VertexRegister, Type) \ 280 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister)) 281 282 #define D3DVSD_SKIP(Count) \ 283 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT)) 284 285 #define D3DVSD_STREAM(StreamNumber) \ 286 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber)) 287 288 #define D3DVSD_STREAM_TESS() \ 289 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK)) 290 291 #define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \ 292 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut)) 293 294 #define D3DVSD_TESSUV(Register) \ 295 (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register)) 296 297 298 /******************************** 299 * Pixel/Vertex Shaders Functions 300 */ 301 302 /** Maximum number of supported texture coordinates sets operation */ 303 #define D3DDP_MAXTEXCOORD 8 304 305 /** opcode token mask */ 306 #define D3DSI_OPCODE_MASK 0x0000FFFF 307 308 /** opcodes types for PS and VS */ 309 typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE { 310 D3DSIO_NOP = 0, 311 D3DSIO_MOV = 1, 312 D3DSIO_ADD = 2, 313 D3DSIO_SUB = 3, 314 D3DSIO_MAD = 4, 315 D3DSIO_MUL = 5, 316 D3DSIO_RCP = 6, 317 D3DSIO_RSQ = 7, 318 D3DSIO_DP3 = 8, 319 D3DSIO_DP4 = 9, 320 D3DSIO_MIN = 10, 321 D3DSIO_MAX = 11, 322 D3DSIO_SLT = 12, 323 D3DSIO_SGE = 13, 324 D3DSIO_EXP = 14, 325 D3DSIO_LOG = 15, 326 D3DSIO_LIT = 16, 327 D3DSIO_DST = 17, 328 D3DSIO_LRP = 18, 329 D3DSIO_FRC = 19, 330 D3DSIO_M4x4 = 20, 331 D3DSIO_M4x3 = 21, 332 D3DSIO_M3x4 = 22, 333 D3DSIO_M3x3 = 23, 334 D3DSIO_M3x2 = 24, 335 336 D3DSIO_TEXCOORD = 64, 337 D3DSIO_TEXKILL = 65, 338 D3DSIO_TEX = 66, 339 D3DSIO_TEXBEM = 67, 340 D3DSIO_TEXBEML = 68, 341 D3DSIO_TEXREG2AR = 69, 342 D3DSIO_TEXREG2GB = 70, 343 D3DSIO_TEXM3x2PAD = 71, 344 D3DSIO_TEXM3x2TEX = 72, 345 D3DSIO_TEXM3x3PAD = 73, 346 D3DSIO_TEXM3x3TEX = 74, 347 D3DSIO_TEXM3x3DIFF = 75, 348 D3DSIO_TEXM3x3SPEC = 76, 349 D3DSIO_TEXM3x3VSPEC = 77, 350 D3DSIO_EXPP = 78, 351 D3DSIO_LOGP = 79, 352 D3DSIO_CND = 80, 353 D3DSIO_DEF = 81, 354 D3DSIO_TEXREG2RGB = 82, 355 D3DSIO_TEXDP3TEX = 83, 356 D3DSIO_TEXM3x2DEPTH = 84, 357 D3DSIO_TEXDP3 = 85, 358 D3DSIO_TEXM3x3 = 86, 359 D3DSIO_TEXDEPTH = 87, 360 D3DSIO_CMP = 88, 361 D3DSIO_BEM = 89, 362 363 D3DSIO_PHASE = 0xFFFD, 364 D3DSIO_COMMENT = 0xFFFE, 365 D3DSIO_END = 0XFFFF, 366 367 D3DSIO_FORCE_DWORD = 0X7FFFFFFF /** for 32-bit alignment */ 368 } D3DSHADER_INSTRUCTION_OPCODE_TYPE; 369 370 /** for parallelism */ 371 #define D3DSI_COISSUE 0x40000000 372 373 /** destination parameter modifiers (.xyzw) */ 374 #define D3DSP_WRITEMASK_0 0x00010000 /* .x r */ 375 #define D3DSP_WRITEMASK_1 0x00020000 /* .y g */ 376 #define D3DSP_WRITEMASK_2 0x00040000 /* .z b */ 377 #define D3DSP_WRITEMASK_3 0x00080000 /* .w a */ 378 #define D3DSP_WRITEMASK_ALL 0x000F0000 /* all */ 379 380 #define D3DSP_DSTMOD_SHIFT 20 381 #define D3DSP_DSTMOD_MASK (0xF << D3DSP_DSTMOD_SHIFT) 382 383 typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE { 384 D3DSPDM_NONE = 0 << D3DSP_DSTMOD_SHIFT, 385 D3DSPDM_SATURATE = 1 << D3DSP_DSTMOD_SHIFT, 386 D3DSPDM_FORCE_DWORD = 0X7FFFFFFF 387 } D3DSHADER_PARAM_DSTMOD_TYPE; 388 389 /** destination param */ 390 #define D3DSP_DSTSHIFT_SHIFT 24 391 #define D3DSP_DSTSHIFT_MASK (0xF << D3DSP_DSTSHIFT_SHIFT) 392 393 /** destination/source reg type */ 394 #define D3DSP_REGTYPE_SHIFT 28 395 #define D3DSP_REGTYPE_MASK (0x7 << D3DSP_REGTYPE_SHIFT) 396 397 typedef enum _D3DSHADER_PARAM_REGISTER_TYPE { 398 D3DSPR_TEMP = 0 << D3DSP_REGTYPE_SHIFT, 399 D3DSPR_INPUT = 1 << D3DSP_REGTYPE_SHIFT, 400 D3DSPR_CONST = 2 << D3DSP_REGTYPE_SHIFT, 401 D3DSPR_ADDR = 3 << D3DSP_REGTYPE_SHIFT, 402 D3DSPR_TEXTURE = 3 << D3DSP_REGTYPE_SHIFT, 403 D3DSPR_RASTOUT = 4 << D3DSP_REGTYPE_SHIFT, 404 D3DSPR_ATTROUT = 5 << D3DSP_REGTYPE_SHIFT, 405 D3DSPR_TEXCRDOUT = 6 << D3DSP_REGTYPE_SHIFT, 406 D3DSPR_FORCE_DWORD = 0x7FFFFFFF 407 } D3DSHADER_PARAM_REGISTER_TYPE; 408 409 typedef enum _D3DVS_RASTOUT_OFFSETS { 410 D3DSRO_POSITION = 0, 411 D3DSRO_FOG = 1, 412 D3DSRO_POINT_SIZE = 2, 413 D3DSRO_FORCE_DWORD = 0x7FFFFFFF 414 } D3DVS_RASTOUT_OFFSETS; 415 416 #define D3DVS_ADDRESSMODE_SHIFT 13 417 #define D3DVS_ADDRESSMODE_MASK (0x1 << D3DVS_ADDRESSMODE_SHIFT) 418 419 typedef enum _D3DVS_ADDRESSMODE_TYPE { 420 D3DVS_ADDRMODE_ABSOLUTE = 0 << D3DVS_ADDRESSMODE_SHIFT, 421 D3DVS_ADDRMODE_RELATIVE = 1 << D3DVS_ADDRESSMODE_SHIFT, 422 D3DVS_ADDRMODE_FORCE_DWORD = 0x7FFFFFFF 423 } D3DVS_ADDRESSMODE_TYPE; 424 425 #define D3DVS_SWIZZLE_SHIFT 16 426 #define D3DVS_SWIZZLE_MASK (0xFF << D3DVS_SWIZZLE_SHIFT) 427 428 #define D3DSP_SWIZZLE_SHIFT 16 429 #define D3DSP_SWIZZLE_MASK (0xFF << D3DSP_SWIZZLE_SHIFT) 430 431 #define D3DVS_X_X (0 << D3DVS_SWIZZLE_SHIFT) 432 #define D3DVS_X_Y (1 << D3DVS_SWIZZLE_SHIFT) 433 #define D3DVS_X_Z (2 << D3DVS_SWIZZLE_SHIFT) 434 #define D3DVS_X_W (3 << D3DVS_SWIZZLE_SHIFT) 435 436 #define D3DVS_Y_X (0 << (D3DVS_SWIZZLE_SHIFT + 2)) 437 #define D3DVS_Y_Y (1 << (D3DVS_SWIZZLE_SHIFT + 2)) 438 #define D3DVS_Y_Z (2 << (D3DVS_SWIZZLE_SHIFT + 2)) 439 #define D3DVS_Y_W (3 << (D3DVS_SWIZZLE_SHIFT + 2)) 440 441 #define D3DVS_Z_X (0 << (D3DVS_SWIZZLE_SHIFT + 4)) 442 #define D3DVS_Z_Y (1 << (D3DVS_SWIZZLE_SHIFT + 4)) 443 #define D3DVS_Z_Z (2 << (D3DVS_SWIZZLE_SHIFT + 4)) 444 #define D3DVS_Z_W (3 << (D3DVS_SWIZZLE_SHIFT + 4)) 445 446 #define D3DVS_W_X (0 << (D3DVS_SWIZZLE_SHIFT + 6)) 447 #define D3DVS_W_Y (1 << (D3DVS_SWIZZLE_SHIFT + 6)) 448 #define D3DVS_W_Z (2 << (D3DVS_SWIZZLE_SHIFT + 6)) 449 #define D3DVS_W_W (3 << (D3DVS_SWIZZLE_SHIFT + 6)) 450 451 #define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W) 452 453 #define D3DSP_NOSWIZZLE \ 454 ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6))) 455 456 #define D3DSP_SRCMOD_SHIFT 24 457 #define D3DSP_SRCMOD_MASK (0xF << D3DSP_SRCMOD_SHIFT) 458 459 typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE { 460 D3DSPSM_NONE = 0 << D3DSP_SRCMOD_SHIFT, 461 D3DSPSM_NEG = 1 << D3DSP_SRCMOD_SHIFT, 462 D3DSPSM_BIAS = 2 << D3DSP_SRCMOD_SHIFT, 463 D3DSPSM_BIASNEG = 3 << D3DSP_SRCMOD_SHIFT, 464 D3DSPSM_SIGN = 4 << D3DSP_SRCMOD_SHIFT, 465 D3DSPSM_SIGNNEG = 5 << D3DSP_SRCMOD_SHIFT, 466 D3DSPSM_COMP = 6 << D3DSP_SRCMOD_SHIFT, 467 D3DSPSM_X2 = 7 << D3DSP_SRCMOD_SHIFT, 468 D3DSPSM_X2NEG = 8 << D3DSP_SRCMOD_SHIFT, 469 D3DSPSM_DZ = 9 << D3DSP_SRCMOD_SHIFT, 470 D3DSPSM_DW = 10 << D3DSP_SRCMOD_SHIFT, 471 D3DSPSM_FORCE_DWORD = 0x7FFFFFFF 472 } D3DSHADER_PARAM_SRCMOD_TYPE; 473 474 #define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor)) 475 #define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor)) 476 #define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF) 477 #define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF) 478 479 #define D3DSI_COMMENTSIZE_SHIFT 16 480 #define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT) 481 482 #define D3DSHADER_COMMENT(commentSize) \ 483 ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT) 484 485 #define D3DPS_END() 0x0000FFFF 486 #define D3DVS_END() 0x0000FFFF 487 488 489 /***************************************************************************** 490 * Direct 3D v8 enumerated types 491 */ 492 typedef enum _D3DBACKBUFFER_TYPE { 493 D3DBACKBUFFER_TYPE_MONO = 0, 494 D3DBACKBUFFER_TYPE_LEFT = 1, 495 D3DBACKBUFFER_TYPE_RIGHT = 2, 496 497 D3DBACKBUFFER_TYPE_FORCE_DWORD = 0x7fffffff 498 } D3DBACKBUFFER_TYPE; 499 500 typedef enum _D3DBASISTYPE{ 501 D3DBASIS_BEZIER = 0, 502 D3DBASIS_BSPLINE = 1, 503 D3DBASIS_INTERPOLATE = 2, 504 505 D3DBASIS_FORCE_DWORD = 0x7fffffff 506 } D3DBASISTYPE; 507 508 typedef enum _D3DBLEND { 509 D3DBLEND_ZERO = 1, 510 D3DBLEND_ONE = 2, 511 D3DBLEND_SRCCOLOR = 3, 512 D3DBLEND_INVSRCCOLOR = 4, 513 D3DBLEND_SRCALPHA = 5, 514 D3DBLEND_INVSRCALPHA = 6, 515 D3DBLEND_DESTALPHA = 7, 516 D3DBLEND_INVDESTALPHA = 8, 517 D3DBLEND_DESTCOLOR = 9, 518 D3DBLEND_INVDESTCOLOR = 10, 519 D3DBLEND_SRCALPHASAT = 11, 520 D3DBLEND_BOTHSRCALPHA = 12, 521 D3DBLEND_BOTHINVSRCALPHA = 13, 522 523 D3DBLEND_FORCE_DWORD = 0x7fffffff 524 } D3DBLEND; 525 526 typedef enum _D3DBLENDOP { 527 D3DBLENDOP_ADD = 1, 528 D3DBLENDOP_SUBTRACT = 2, 529 D3DBLENDOP_REVSUBTRACT = 3, 530 D3DBLENDOP_MIN = 4, 531 D3DBLENDOP_MAX = 5, 532 533 D3DBLENDOP_FORCE_DWORD = 0x7fffffff 534 } D3DBLENDOP; 535 536 typedef enum _D3DCMPFUNC { 537 D3DCMP_NEVER = 1, 538 D3DCMP_LESS = 2, 539 D3DCMP_EQUAL = 3, 540 D3DCMP_LESSEQUAL = 4, 541 D3DCMP_GREATER = 5, 542 D3DCMP_NOTEQUAL = 6, 543 D3DCMP_GREATEREQUAL = 7, 544 D3DCMP_ALWAYS = 8, 545 546 D3DCMP_FORCE_DWORD = 0x7fffffff 547 } D3DCMPFUNC; 548 549 typedef enum _D3DCUBEMAP_FACES { 550 D3DCUBEMAP_FACE_POSITIVE_X = 0, 551 D3DCUBEMAP_FACE_NEGATIVE_X = 1, 552 D3DCUBEMAP_FACE_POSITIVE_Y = 2, 553 D3DCUBEMAP_FACE_NEGATIVE_Y = 3, 554 D3DCUBEMAP_FACE_POSITIVE_Z = 4, 555 D3DCUBEMAP_FACE_NEGATIVE_Z = 5, 556 557 D3DCUBEMAP_FACE_FORCE_DWORD = 0xffffffff 558 } D3DCUBEMAP_FACES; 559 560 typedef enum _D3DCULL { 561 D3DCULL_NONE = 1, 562 D3DCULL_CW = 2, 563 D3DCULL_CCW = 3, 564 565 D3DCULL_FORCE_DWORD = 0x7fffffff 566 } D3DCULL; 567 568 typedef enum _D3DDEBUGMONITORTOKENS { 569 D3DDMT_ENABLE = 0, 570 D3DDMT_DISABLE = 1, 571 572 D3DDMT_FORCE_DWORD = 0x7fffffff 573 } D3DDEBUGMONITORTOKENS; 574 575 typedef enum _D3DDEVTYPE { 576 D3DDEVTYPE_HAL = 1, 577 D3DDEVTYPE_REF = 2, 578 D3DDEVTYPE_SW = 3, 579 580 D3DDEVTYPE_FORCE_DWORD = 0xffffffff 581 } D3DDEVTYPE; 582 583 typedef enum _D3DFILLMODE { 584 D3DFILL_POINT = 1, 585 D3DFILL_WIREFRAME = 2, 586 D3DFILL_SOLID = 3, 587 588 D3DFILL_FORCE_DWORD = 0x7fffffff 589 } D3DFILLMODE; 590 591 typedef enum _D3DFOGMODE { 592 D3DFOG_NONE = 0, 593 D3DFOG_EXP = 1, 594 D3DFOG_EXP2 = 2, 595 D3DFOG_LINEAR = 3, 596 597 D3DFOG_FORCE_DWORD = 0x7fffffff 598 } D3DFOGMODE; 599 600 typedef enum _D3DFORMAT { 601 D3DFMT_UNKNOWN = 0, 602 603 D3DFMT_R8G8B8 = 20, 604 D3DFMT_A8R8G8B8 = 21, 605 D3DFMT_X8R8G8B8 = 22, 606 D3DFMT_R5G6B5 = 23, 607 D3DFMT_X1R5G5B5 = 24, 608 D3DFMT_A1R5G5B5 = 25, 609 D3DFMT_A4R4G4B4 = 26, 610 D3DFMT_R3G3B2 = 27, 611 D3DFMT_A8 = 28, 612 D3DFMT_A8R3G3B2 = 29, 613 D3DFMT_X4R4G4B4 = 30, 614 D3DFMT_A2B10G10R10 = 31, 615 D3DFMT_G16R16 = 34, 616 617 D3DFMT_A8P8 = 40, 618 D3DFMT_P8 = 41, 619 620 D3DFMT_L8 = 50, 621 D3DFMT_A8L8 = 51, 622 D3DFMT_A4L4 = 52, 623 624 D3DFMT_V8U8 = 60, 625 D3DFMT_L6V5U5 = 61, 626 D3DFMT_X8L8V8U8 = 62, 627 D3DFMT_Q8W8V8U8 = 63, 628 D3DFMT_V16U16 = 64, 629 D3DFMT_W11V11U10 = 65, 630 D3DFMT_A2W10V10U10 = 67, 631 632 D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'), 633 D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'), 634 D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'), 635 D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'), 636 D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'), 637 D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'), 638 D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'), 639 640 D3DFMT_D16_LOCKABLE = 70, 641 D3DFMT_D32 = 71, 642 D3DFMT_D15S1 = 73, 643 D3DFMT_D24S8 = 75, 644 D3DFMT_D16 = 80, 645 D3DFMT_D24X8 = 77, 646 D3DFMT_D24X4S4 = 79, 647 648 D3DFMT_VERTEXDATA = 100, 649 D3DFMT_INDEX16 = 101, 650 D3DFMT_INDEX32 = 102, 651 652 D3DFMT_FORCE_DWORD = 0xFFFFFFFF 653 } D3DFORMAT; 654 655 typedef enum _D3DLIGHTTYPE { 656 D3DLIGHT_POINT = 1, 657 D3DLIGHT_SPOT = 2, 658 D3DLIGHT_DIRECTIONAL = 3, 659 660 D3DLIGHT_FORCE_DWORD = 0x7fffffff 661 } D3DLIGHTTYPE; 662 663 typedef enum _D3DMATERIALCOLORSOURCE { 664 D3DMCS_MATERIAL = 0, 665 D3DMCS_COLOR1 = 1, 666 D3DMCS_COLOR2 = 2, 667 668 D3DMCS_FORCE_DWORD = 0x7fffffff 669 } D3DMATERIALCOLORSOURCE; 670 671 typedef enum _D3DMULTISAMPLE_TYPE { 672 D3DMULTISAMPLE_NONE = 0, 673 D3DMULTISAMPLE_2_SAMPLES = 2, 674 D3DMULTISAMPLE_3_SAMPLES = 3, 675 D3DMULTISAMPLE_4_SAMPLES = 4, 676 D3DMULTISAMPLE_5_SAMPLES = 5, 677 D3DMULTISAMPLE_6_SAMPLES = 6, 678 D3DMULTISAMPLE_7_SAMPLES = 7, 679 D3DMULTISAMPLE_8_SAMPLES = 8, 680 D3DMULTISAMPLE_9_SAMPLES = 9, 681 D3DMULTISAMPLE_10_SAMPLES = 10, 682 D3DMULTISAMPLE_11_SAMPLES = 11, 683 D3DMULTISAMPLE_12_SAMPLES = 12, 684 D3DMULTISAMPLE_13_SAMPLES = 13, 685 D3DMULTISAMPLE_14_SAMPLES = 14, 686 D3DMULTISAMPLE_15_SAMPLES = 15, 687 D3DMULTISAMPLE_16_SAMPLES = 16, 688 689 D3DMULTISAMPLE_FORCE_DWORD = 0x7fffffff 690 } D3DMULTISAMPLE_TYPE; 691 692 typedef enum _D3DORDERTYPE { 693 D3DORDER_LINEAR = 1, 694 D3DORDER_QUADRATIC = 2, 695 D3DORDER_CUBIC = 3, 696 D3DORDER_QUINTIC = 5, 697 698 D3DORDER_FORCE_DWORD = 0x7fffffff 699 } D3DORDERTYPE; 700 701 typedef enum _D3DPATCHEDGESTYLE { 702 D3DPATCHEDGE_DISCRETE = 0, 703 D3DPATCHEDGE_CONTINUOUS = 1, 704 705 D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff, 706 } D3DPATCHEDGESTYLE; 707 708 typedef enum _D3DPOOL { 709 D3DPOOL_DEFAULT = 0, 710 D3DPOOL_MANAGED = 1, 711 D3DPOOL_SYSTEMMEM = 2, 712 D3DPOOL_SCRATCH = 3, 713 714 D3DPOOL_FORCE_DWORD = 0x7fffffff 715 } D3DPOOL; 716 717 typedef enum _D3DPRIMITIVETYPE { 718 D3DPT_POINTLIST = 1, 719 D3DPT_LINELIST = 2, 720 D3DPT_LINESTRIP = 3, 721 D3DPT_TRIANGLELIST = 4, 722 D3DPT_TRIANGLESTRIP = 5, 723 D3DPT_TRIANGLEFAN = 6, 724 725 D3DPT_FORCE_DWORD = 0x7fffffff 726 } D3DPRIMITIVETYPE; 727 728 typedef enum _D3DRENDERSTATETYPE { 729 D3DRS_ZENABLE = 7, 730 D3DRS_FILLMODE = 8, 731 D3DRS_SHADEMODE = 9, 732 D3DRS_LINEPATTERN = 10, 733 D3DRS_ZWRITEENABLE = 14, 734 D3DRS_ALPHATESTENABLE = 15, 735 D3DRS_LASTPIXEL = 16, 736 D3DRS_SRCBLEND = 19, 737 D3DRS_DESTBLEND = 20, 738 D3DRS_CULLMODE = 22, 739 D3DRS_ZFUNC = 23, 740 D3DRS_ALPHAREF = 24, 741 D3DRS_ALPHAFUNC = 25, 742 D3DRS_DITHERENABLE = 26, 743 D3DRS_ALPHABLENDENABLE = 27, 744 D3DRS_FOGENABLE = 28, 745 D3DRS_SPECULARENABLE = 29, 746 D3DRS_ZVISIBLE = 30, 747 D3DRS_FOGCOLOR = 34, 748 D3DRS_FOGTABLEMODE = 35, 749 D3DRS_FOGSTART = 36, 750 D3DRS_FOGEND = 37, 751 D3DRS_FOGDENSITY = 38, 752 D3DRS_EDGEANTIALIAS = 40, 753 D3DRS_ZBIAS = 47, 754 D3DRS_RANGEFOGENABLE = 48, 755 D3DRS_STENCILENABLE = 52, 756 D3DRS_STENCILFAIL = 53, 757 D3DRS_STENCILZFAIL = 54, 758 D3DRS_STENCILPASS = 55, 759 D3DRS_STENCILFUNC = 56, 760 D3DRS_STENCILREF = 57, 761 D3DRS_STENCILMASK = 58, 762 D3DRS_STENCILWRITEMASK = 59, 763 D3DRS_TEXTUREFACTOR = 60, 764 D3DRS_WRAP0 = 128, 765 D3DRS_WRAP1 = 129, 766 D3DRS_WRAP2 = 130, 767 D3DRS_WRAP3 = 131, 768 D3DRS_WRAP4 = 132, 769 D3DRS_WRAP5 = 133, 770 D3DRS_WRAP6 = 134, 771 D3DRS_WRAP7 = 135, 772 D3DRS_CLIPPING = 136, 773 D3DRS_LIGHTING = 137, 774 D3DRS_AMBIENT = 139, 775 D3DRS_FOGVERTEXMODE = 140, 776 D3DRS_COLORVERTEX = 141, 777 D3DRS_LOCALVIEWER = 142, 778 D3DRS_NORMALIZENORMALS = 143, 779 D3DRS_DIFFUSEMATERIALSOURCE = 145, 780 D3DRS_SPECULARMATERIALSOURCE = 146, 781 D3DRS_AMBIENTMATERIALSOURCE = 147, 782 D3DRS_EMISSIVEMATERIALSOURCE = 148, 783 D3DRS_VERTEXBLEND = 151, 784 D3DRS_CLIPPLANEENABLE = 152, 785 D3DRS_SOFTWAREVERTEXPROCESSING = 153, 786 D3DRS_POINTSIZE = 154, 787 D3DRS_POINTSIZE_MIN = 155, 788 D3DRS_POINTSPRITEENABLE = 156, 789 D3DRS_POINTSCALEENABLE = 157, 790 D3DRS_POINTSCALE_A = 158, 791 D3DRS_POINTSCALE_B = 159, 792 D3DRS_POINTSCALE_C = 160, 793 D3DRS_MULTISAMPLEANTIALIAS = 161, 794 D3DRS_MULTISAMPLEMASK = 162, 795 D3DRS_PATCHEDGESTYLE = 163, 796 D3DRS_PATCHSEGMENTS = 164, 797 D3DRS_DEBUGMONITORTOKEN = 165, 798 D3DRS_POINTSIZE_MAX = 166, 799 D3DRS_INDEXEDVERTEXBLENDENABLE = 167, 800 D3DRS_COLORWRITEENABLE = 168, 801 D3DRS_TWEENFACTOR = 170, 802 D3DRS_BLENDOP = 171, 803 D3DRS_POSITIONORDER = 172, 804 D3DRS_NORMALORDER = 173, 805 806 D3DRS_FORCE_DWORD = 0x7fffffff 807 } D3DRENDERSTATETYPE; 808 809 typedef enum _D3DRESOURCETYPE { 810 D3DRTYPE_SURFACE = 1, 811 D3DRTYPE_VOLUME = 2, 812 D3DRTYPE_TEXTURE = 3, 813 D3DRTYPE_VOLUMETEXTURE = 4, 814 D3DRTYPE_CUBETEXTURE = 5, 815 D3DRTYPE_VERTEXBUFFER = 6, 816 D3DRTYPE_INDEXBUFFER = 7, 817 818 D3DRTYPE_FORCE_DWORD = 0x7fffffff 819 } D3DRESOURCETYPE; 820 821 typedef enum _D3DSHADEMODE { 822 D3DSHADE_FLAT = 1, 823 D3DSHADE_GOURAUD = 2, 824 D3DSHADE_PHONG = 3, 825 826 D3DSHADE_FORCE_DWORD = 0x7fffffff 827 } D3DSHADEMODE; 828 829 typedef enum _D3DSTATEBLOCKTYPE { 830 D3DSBT_ALL = 1, 831 D3DSBT_PIXELSTATE = 2, 832 D3DSBT_VERTEXSTATE = 3, 833 834 D3DSBT_FORCE_DWORD = 0xffffffff 835 } D3DSTATEBLOCKTYPE; 836 837 typedef enum _D3DSTENCILOP { 838 D3DSTENCILOP_KEEP = 1, 839 D3DSTENCILOP_ZERO = 2, 840 D3DSTENCILOP_REPLACE = 3, 841 D3DSTENCILOP_INCRSAT = 4, 842 D3DSTENCILOP_DECRSAT = 5, 843 D3DSTENCILOP_INVERT = 6, 844 D3DSTENCILOP_INCR = 7, 845 D3DSTENCILOP_DECR = 8, 846 847 D3DSTENCILOP_FORCE_DWORD = 0x7fffffff 848 } D3DSTENCILOP; 849 850 typedef enum _D3DSWAPEFFECT { 851 D3DSWAPEFFECT_DISCARD = 1, 852 D3DSWAPEFFECT_FLIP = 2, 853 D3DSWAPEFFECT_COPY = 3, 854 D3DSWAPEFFECT_COPY_VSYNC = 4, 855 856 D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF 857 } D3DSWAPEFFECT; 858 859 typedef enum _D3DTEXTUREADDRESS { 860 D3DTADDRESS_WRAP = 1, 861 D3DTADDRESS_MIRROR = 2, 862 D3DTADDRESS_CLAMP = 3, 863 D3DTADDRESS_BORDER = 4, 864 D3DTADDRESS_MIRRORONCE = 5, 865 866 D3DTADDRESS_FORCE_DWORD = 0x7fffffff 867 } D3DTEXTUREADDRESS; 868 869 typedef enum _D3DTEXTUREFILTERTYPE { 870 D3DTEXF_NONE = 0, 871 D3DTEXF_POINT = 1, 872 D3DTEXF_LINEAR = 2, 873 D3DTEXF_ANISOTROPIC = 3, 874 D3DTEXF_FLATCUBIC = 4, 875 D3DTEXF_GAUSSIANCUBIC = 5, 876 877 D3DTEXF_FORCE_DWORD = 0x7fffffff 878 } D3DTEXTUREFILTERTYPE; 879 880 typedef enum _D3DTEXTUREOP { 881 D3DTOP_DISABLE = 1, 882 D3DTOP_SELECTARG1 = 2, 883 D3DTOP_SELECTARG2 = 3, 884 D3DTOP_MODULATE = 4, 885 D3DTOP_MODULATE2X = 5, 886 D3DTOP_MODULATE4X = 6, 887 D3DTOP_ADD = 7, 888 D3DTOP_ADDSIGNED = 8, 889 D3DTOP_ADDSIGNED2X = 9, 890 D3DTOP_SUBTRACT = 10, 891 D3DTOP_ADDSMOOTH = 11, 892 D3DTOP_BLENDDIFFUSEALPHA = 12, 893 D3DTOP_BLENDTEXTUREALPHA = 13, 894 D3DTOP_BLENDFACTORALPHA = 14, 895 D3DTOP_BLENDTEXTUREALPHAPM = 15, 896 D3DTOP_BLENDCURRENTALPHA = 16, 897 D3DTOP_PREMODULATE = 17, 898 D3DTOP_MODULATEALPHA_ADDCOLOR = 18, 899 D3DTOP_MODULATECOLOR_ADDALPHA = 19, 900 D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20, 901 D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21, 902 D3DTOP_BUMPENVMAP = 22, 903 D3DTOP_BUMPENVMAPLUMINANCE = 23, 904 D3DTOP_DOTPRODUCT3 = 24, 905 D3DTOP_MULTIPLYADD = 25, 906 D3DTOP_LERP = 26, 907 908 D3DTOP_FORCE_DWORD = 0x7fffffff, 909 } D3DTEXTUREOP; 910 911 typedef enum _D3DTEXTURESTAGESTATETYPE { 912 D3DTSS_COLOROP = 1, 913 D3DTSS_COLORARG1 = 2, 914 D3DTSS_COLORARG2 = 3, 915 D3DTSS_ALPHAOP = 4, 916 D3DTSS_ALPHAARG1 = 5, 917 D3DTSS_ALPHAARG2 = 6, 918 D3DTSS_BUMPENVMAT00 = 7, 919 D3DTSS_BUMPENVMAT01 = 8, 920 D3DTSS_BUMPENVMAT10 = 9, 921 D3DTSS_BUMPENVMAT11 = 10, 922 D3DTSS_TEXCOORDINDEX = 11, 923 D3DTSS_ADDRESSU = 13, 924 D3DTSS_ADDRESSV = 14, 925 D3DTSS_BORDERCOLOR = 15, 926 D3DTSS_MAGFILTER = 16, 927 D3DTSS_MINFILTER = 17, 928 D3DTSS_MIPFILTER = 18, 929 D3DTSS_MIPMAPLODBIAS = 19, 930 D3DTSS_MAXMIPLEVEL = 20, 931 D3DTSS_MAXANISOTROPY = 21, 932 D3DTSS_BUMPENVLSCALE = 22, 933 D3DTSS_BUMPENVLOFFSET = 23, 934 D3DTSS_TEXTURETRANSFORMFLAGS = 24, 935 D3DTSS_ADDRESSW = 25, 936 D3DTSS_COLORARG0 = 26, 937 D3DTSS_ALPHAARG0 = 27, 938 D3DTSS_RESULTARG = 28, 939 940 D3DTSS_FORCE_DWORD = 0x7fffffff 941 } D3DTEXTURESTAGESTATETYPE; 942 943 typedef enum _D3DTEXTURETRANSFORMFLAGS { 944 D3DTTFF_DISABLE = 0, 945 D3DTTFF_COUNT1 = 1, 946 D3DTTFF_COUNT2 = 2, 947 D3DTTFF_COUNT3 = 3, 948 D3DTTFF_COUNT4 = 4, 949 D3DTTFF_PROJECTED = 256, 950 951 D3DTTFF_FORCE_DWORD = 0x7fffffff 952 } D3DTEXTURETRANSFORMFLAGS; 953 954 typedef enum _D3DTRANSFORMSTATETYPE { 955 D3DTS_VIEW = 2, 956 D3DTS_PROJECTION = 3, 957 D3DTS_TEXTURE0 = 16, 958 D3DTS_TEXTURE1 = 17, 959 D3DTS_TEXTURE2 = 18, 960 D3DTS_TEXTURE3 = 19, 961 D3DTS_TEXTURE4 = 20, 962 D3DTS_TEXTURE5 = 21, 963 D3DTS_TEXTURE6 = 22, 964 D3DTS_TEXTURE7 = 23, 965 966 D3DTS_FORCE_DWORD = 0x7fffffff 967 } D3DTRANSFORMSTATETYPE; 968 969 typedef enum _D3DVERTEXBLENDFLAGS { 970 D3DVBF_DISABLE = 0, 971 D3DVBF_1WEIGHTS = 1, 972 D3DVBF_2WEIGHTS = 2, 973 D3DVBF_3WEIGHTS = 3, 974 D3DVBF_TWEENING = 255, 975 D3DVBF_0WEIGHTS = 256 976 } D3DVERTEXBLENDFLAGS; 977 978 typedef enum _D3DZBUFFERTYPE { 979 D3DZB_FALSE = 0, 980 D3DZB_TRUE = 1, 981 D3DZB_USEW = 2, 982 983 D3DZB_FORCE_DWORD = 0x7fffffff 984 } D3DZBUFFERTYPE; 985 986 987 /***************************************************************************** 988 * Direct 3D v8 typedefs 989 */ 990 typedef DWORD D3DCOLOR; 991 992 /***************************************************************************** 993 * Direct 3D v8 structures 994 */ 995 typedef struct _D3DADAPTER_IDENTIFIER8 { 996 char Driver[MAX_DEVICE_IDENTIFIER_STRING]; 997 char Description[MAX_DEVICE_IDENTIFIER_STRING]; 998 999 LARGE_INTEGER DriverVersion; 1000 DWORD VendorId; 1001 DWORD DeviceId; 1002 DWORD SubSysId; 1003 DWORD Revision; 1004 1005 GUID DeviceIdentifier; 1006 1007 DWORD WHQLLevel; 1008 } D3DADAPTER_IDENTIFIER8; 1009 1010 typedef struct _D3DBOX { 1011 UINT Left; 1012 UINT Top; 1013 UINT Right; 1014 UINT Bottom; 1015 UINT Front; 1016 UINT Back; 1017 } D3DBOX; 1018 1019 typedef struct _D3DCLIPSTATUS8 { 1020 DWORD ClipUnion; 1021 DWORD ClipIntersection; 1022 } D3DCLIPSTATUS8; 1023 1024 typedef struct _D3DCOLORVALUE { 1025 float r; 1026 float g; 1027 float b; 1028 float a; 1029 } D3DCOLORVALUE; 1030 1031 typedef struct _D3DDEVICE_CREATION_PARAMETERS { 1032 UINT AdapterOrdinal; 1033 D3DDEVTYPE DeviceType; 1034 HWND hFocusWindow; 1035 DWORD BehaviorFlags; 1036 } D3DDEVICE_CREATION_PARAMETERS; 1037 1038 typedef struct _D3DDISPLAYMODE { 1039 UINT Width; 1040 UINT Height; 1041 UINT RefreshRate; 1042 D3DFORMAT Format; 1043 } D3DDISPLAYMODE; 1044 1045 typedef struct _D3DGAMMARAMP { 1046 WORD red [256]; 1047 WORD green[256]; 1048 WORD blue [256]; 1049 } D3DGAMMARAMP; 1050 1051 typedef struct _D3DINDEXBUFFER_DESC { 1052 D3DFORMAT Format; 1053 D3DRESOURCETYPE Type; 1054 DWORD Usage; 1055 D3DPOOL Pool; 1056 UINT Size; 1057 } D3DINDEXBUFFER_DESC; 1058 1059 #ifndef D3DVECTOR_DEFINED 1060 typedef struct _D3DVECTOR { 1061 float x; 1062 float y; 1063 float z; 1064 } D3DVECTOR; 1065 #define D3DVECTOR_DEFINED 1066 #endif 1067 1068 typedef struct _D3DLIGHT8 { 1069 D3DLIGHTTYPE Type; 1070 D3DCOLORVALUE Diffuse; 1071 D3DCOLORVALUE Specular; 1072 D3DCOLORVALUE Ambient; 1073 D3DVECTOR Position; 1074 D3DVECTOR Direction; 1075 float Range; 1076 float Falloff; 1077 float Attenuation0; 1078 float Attenuation1; 1079 float Attenuation2; 1080 float Theta; 1081 float Phi; 1082 } D3DLIGHT8; 1083 1084 typedef struct _D3DLINEPATTERN { 1085 WORD wRepeatFactor; 1086 WORD wLinePattern; 1087 } D3DLINEPATTERN; 1088 1089 typedef struct _D3DLOCKED_BOX { 1090 INT RowPitch; 1091 INT SlicePitch; 1092 void* pBits; 1093 } D3DLOCKED_BOX; 1094 1095 typedef struct _D3DLOCKED_RECT { 1096 INT Pitch; 1097 void* pBits; 1098 } D3DLOCKED_RECT; 1099 1100 typedef struct _D3DMATERIAL8 { 1101 D3DCOLORVALUE Diffuse; 1102 D3DCOLORVALUE Ambient; 1103 D3DCOLORVALUE Specular; 1104 D3DCOLORVALUE Emissive; 1105 float Power; 1106 } D3DMATERIAL8; 1107 1108 typedef struct _D3DMATRIX { 1109 union { 1110 struct { 1111 float _11, _12, _13, _14; 1112 float _21, _22, _23, _24; 1113 float _31, _32, _33, _34; 1114 float _41, _42, _43, _44; 1115 } DUMMYSTRUCTNAME; 1116 float m[4][4]; 1117 } DUMMYUNIONNAME; 1118 } D3DMATRIX; 1119 1120 typedef struct _D3DPRESENT_PARAMETERS_ { 1121 UINT BackBufferWidth; 1122 UINT BackBufferHeight; 1123 D3DFORMAT BackBufferFormat; 1124 UINT BackBufferCount; 1125 1126 D3DMULTISAMPLE_TYPE MultiSampleType; 1127 1128 D3DSWAPEFFECT SwapEffect; 1129 HWND hDeviceWindow; 1130 BOOL Windowed; 1131 BOOL EnableAutoDepthStencil; 1132 D3DFORMAT AutoDepthStencilFormat; 1133 DWORD Flags; 1134 1135 UINT FullScreen_RefreshRateInHz; 1136 UINT FullScreen_PresentationInterval; 1137 1138 } D3DPRESENT_PARAMETERS; 1139 1140 #define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 0x00000001 1141 1142 typedef struct _D3DRANGE { 1143 UINT Offset; 1144 UINT Size; 1145 } D3DRANGE; 1146 1147 typedef struct _D3DRASTER_STATUS { 1148 BOOL InVBlank; 1149 UINT ScanLine; 1150 } D3DRASTER_STATUS; 1151 1152 typedef struct _D3DRECT { 1153 LONG x1; 1154 LONG y1; 1155 LONG x2; 1156 LONG y2; 1157 } D3DRECT; 1158 1159 typedef struct _D3DRECTPATCH_INFO { 1160 UINT StartVertexOffsetWidth; 1161 UINT StartVertexOffsetHeight; 1162 UINT Width; 1163 UINT Height; 1164 UINT Stride; 1165 D3DBASISTYPE Basis; 1166 D3DORDERTYPE Order; 1167 } D3DRECTPATCH_INFO; 1168 1169 typedef struct _D3DSURFACE_DESC { 1170 D3DFORMAT Format; 1171 D3DRESOURCETYPE Type; 1172 DWORD Usage; 1173 D3DPOOL Pool; 1174 UINT Size; 1175 D3DMULTISAMPLE_TYPE MultiSampleType; 1176 UINT Width; 1177 UINT Height; 1178 } D3DSURFACE_DESC; 1179 1180 typedef struct _D3DTRIPATCH_INFO { 1181 UINT StartVertexOffset; 1182 UINT NumVertices; 1183 D3DBASISTYPE Basis; 1184 D3DORDERTYPE Order; 1185 } D3DTRIPATCH_INFO; 1186 1187 typedef struct _D3DVERTEXBUFFER_DESC { 1188 D3DFORMAT Format; 1189 D3DRESOURCETYPE Type; 1190 DWORD Usage; 1191 D3DPOOL Pool; 1192 UINT Size; 1193 DWORD FVF; 1194 } D3DVERTEXBUFFER_DESC; 1195 1196 typedef struct _D3DVIEWPORT8 { 1197 DWORD X; 1198 DWORD Y; 1199 DWORD Width; 1200 DWORD Height; 1201 float MinZ; 1202 float MaxZ; 1203 } D3DVIEWPORT8; 1204 1205 typedef struct _D3DVOLUME_DESC { 1206 D3DFORMAT Format; 1207 D3DRESOURCETYPE Type; 1208 DWORD Usage; 1209 D3DPOOL Pool; 1210 UINT Size; 1211 UINT Width; 1212 UINT Height; 1213 UINT Depth; 1214 } D3DVOLUME_DESC; 1215 1216 #ifdef __i386__ 1217 #include <poppack.h> 1218 #endif 1219 1220 #endif /* __WINE_D3D8TYPES_H */ 1221