1 /*==========================================================================; 2 * 3 * Copyright (C) Microsoft Corporation. All Rights Reserved. 4 * 5 * File: d3d9caps.h 6 * Content: Direct3D capabilities include file 7 * 8 ***************************************************************************/ 9 10 module win32.directx.d3d9caps; 11 version(Windows): 12 13 private import win32.windows, 14 win32.directx.d3d9types; 15 16 align(4): 17 18 struct D3DVSHADERCAPS2_0 19 { 20 DWORD Caps; 21 INT DynamicFlowControlDepth; 22 INT NumTemps; 23 INT StaticFlowControlDepth; 24 } 25 26 const D3DVS20CAPS_PREDICATION = (1<<0); 27 28 const D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH = 24; 29 const D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0; 30 const D3DVS20_MAX_NUMTEMPS = 32; 31 const D3DVS20_MIN_NUMTEMPS = 12; 32 const D3DVS20_MAX_STATICFLOWCONTROLDEPTH = 4; 33 const D3DVS20_MIN_STATICFLOWCONTROLDEPTH = 1; 34 35 struct D3DPSHADERCAPS2_0 36 { 37 DWORD Caps; 38 INT DynamicFlowControlDepth; 39 INT NumTemps; 40 INT StaticFlowControlDepth; 41 INT NumInstructionSlots; 42 } 43 44 const D3DPS20CAPS_ARBITRARYSWIZZLE = (1<<0); 45 const D3DPS20CAPS_GRADIENTINSTRUCTIONS = (1<<1); 46 const D3DPS20CAPS_PREDICATION = (1<<2); 47 const D3DPS20CAPS_NODEPENDENTREADLIMIT = (1<<3); 48 const D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT = (1<<4); 49 50 const D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH = 24; 51 const D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0; 52 const D3DPS20_MAX_NUMTEMPS = 32; 53 const D3DPS20_MIN_NUMTEMPS = 12; 54 const D3DPS20_MAX_STATICFLOWCONTROLDEPTH = 4; 55 const D3DPS20_MIN_STATICFLOWCONTROLDEPTH = 0; 56 const D3DPS20_MAX_NUMINSTRUCTIONSLOTS = 512; 57 const D3DPS20_MIN_NUMINSTRUCTIONSLOTS = 96; 58 59 const D3DMIN30SHADERINSTRUCTIONS = 512; 60 const D3DMAX30SHADERINSTRUCTIONS = 32768; 61 62 struct D3DCAPS9 63 { 64 /* Device Info */ 65 D3DDEVTYPE DeviceType; 66 UINT AdapterOrdinal; 67 68 /* Caps from DX7 Draw */ 69 DWORD Caps; 70 DWORD Caps2; 71 DWORD Caps3; 72 DWORD PresentationIntervals; 73 74 /* Cursor Caps */ 75 DWORD CursorCaps; 76 77 /* 3D Device Caps */ 78 DWORD DevCaps; 79 80 DWORD PrimitiveMiscCaps; 81 DWORD RasterCaps; 82 DWORD ZCmpCaps; 83 DWORD SrcBlendCaps; 84 DWORD DestBlendCaps; 85 DWORD AlphaCmpCaps; 86 DWORD ShadeCaps; 87 DWORD TextureCaps; 88 DWORD TextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture9's 89 DWORD CubeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DCubeTexture9's 90 DWORD VolumeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DVolumeTexture9's 91 DWORD TextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DTexture9's 92 DWORD VolumeTextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture9's 93 94 DWORD LineCaps; // D3DLINECAPS 95 96 DWORD MaxTextureWidth, MaxTextureHeight; 97 DWORD MaxVolumeExtent; 98 99 DWORD MaxTextureRepeat; 100 DWORD MaxTextureAspectRatio; 101 DWORD MaxAnisotropy; 102 float MaxVertexW; 103 104 float GuardBandLeft; 105 float GuardBandTop; 106 float GuardBandRight; 107 float GuardBandBottom; 108 109 float ExtentsAdjust; 110 DWORD StencilCaps; 111 112 DWORD FVFCaps; 113 DWORD TextureOpCaps; 114 DWORD MaxTextureBlendStages; 115 DWORD MaxSimultaneousTextures; 116 117 DWORD VertexProcessingCaps; 118 DWORD MaxActiveLights; 119 DWORD MaxUserClipPlanes; 120 DWORD MaxVertexBlendMatrices; 121 DWORD MaxVertexBlendMatrixIndex; 122 123 float MaxPointSize; 124 125 DWORD MaxPrimitiveCount; // max number of primitives per DrawPrimitive call 126 DWORD MaxVertexIndex; 127 DWORD MaxStreams; 128 DWORD MaxStreamStride; // max stride for SetStreamSource 129 130 DWORD VertexShaderVersion; 131 DWORD MaxVertexShaderConst; // number of vertex shader constant registers 132 133 DWORD PixelShaderVersion; 134 float PixelShader1xMaxValue; // max value storable in registers of ps.1.x shaders 135 136 // Here are the DX9 specific ones 137 DWORD DevCaps2; 138 139 float MaxNpatchTessellationLevel; 140 DWORD Reserved5; 141 142 UINT MasterAdapterOrdinal; // ordinal of master adaptor for adapter group 143 UINT AdapterOrdinalInGroup; // ordinal inside the adapter group 144 UINT NumberOfAdaptersInGroup; // number of adapters in this adapter group (only if master) 145 DWORD DeclTypes; // Data types, supported in vertex declarations 146 DWORD NumSimultaneousRTs; // Will be at least 1 147 DWORD StretchRectFilterCaps; // Filter caps supported by StretchRect 148 D3DVSHADERCAPS2_0 VS20Caps; 149 D3DPSHADERCAPS2_0 PS20Caps; 150 DWORD VertexTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture9's for texture, used in vertex shaders 151 DWORD MaxVShaderInstructionsExecuted; // maximum number of vertex shader instructions that can be executed 152 DWORD MaxPShaderInstructionsExecuted; // maximum number of pixel shader instructions that can be executed 153 DWORD MaxVertexShader30InstructionSlots; 154 DWORD MaxPixelShader30InstructionSlots; 155 } 156 157 // 158 // BIT DEFINES FOR D3DCAPS9 DWORD MEMBERS 159 // 160 161 // 162 // Caps 163 // 164 const D3DCAPS_READ_SCANLINE = 0x00020000L; 165 166 // 167 // Caps2 168 // 169 const D3DCAPS2_FULLSCREENGAMMA = 0x00020000L; 170 const D3DCAPS2_CANCALIBRATEGAMMA = 0x00100000L; 171 const D3DCAPS2_RESERVED = 0x02000000L; 172 const D3DCAPS2_CANMANAGERESOURCE = 0x10000000L; 173 const D3DCAPS2_DYNAMICTEXTURES = 0x20000000L; 174 const D3DCAPS2_CANAUTOGENMIPMAP = 0x40000000L; 175 176 const D3DCAPS2_CANSHARERESOURCE = 0x80000000L; 177 178 // 179 // Caps3 180 // 181 const D3DCAPS3_RESERVED = 0x8000001fL; 182 183 // Indicates that the device can respect the ALPHABLENDENABLE render state 184 // when fullscreen while using the FLIP or DISCARD swap effect. 185 // COPY and COPYVSYNC swap effects work whether or not this flag is set. 186 const D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD = 0x00000020L; 187 188 // Indicates that the device can perform a gamma correction from 189 // a windowed back buffer containing linear content to the sRGB desktop. 190 const D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION = 0x00000080L; 191 192 const D3DCAPS3_COPY_TO_VIDMEM = 0x00000100L; /* Device can acclerate copies from sysmem to local vidmem */ 193 const D3DCAPS3_COPY_TO_SYSTEMMEM = 0x00000200L; /* Device can acclerate copies from local vidmem to sysmem */ 194 195 196 // 197 // PresentationIntervals 198 // 199 const D3DPRESENT_INTERVAL_DEFAULT = 0x00000000L; 200 const D3DPRESENT_INTERVAL_ONE = 0x00000001L; 201 const D3DPRESENT_INTERVAL_TWO = 0x00000002L; 202 const D3DPRESENT_INTERVAL_THREE = 0x00000004L; 203 const D3DPRESENT_INTERVAL_FOUR = 0x00000008L; 204 const D3DPRESENT_INTERVAL_IMMEDIATE = 0x80000000L; 205 206 // 207 // CursorCaps 208 // 209 // Driver supports HW color cursor in at least hi-res modes(height >=400) 210 const D3DCURSORCAPS_COLOR = 0x00000001L; 211 // Driver supports HW cursor also in low-res modes(height < 400) 212 const D3DCURSORCAPS_LOWRES = 0x00000002L; 213 214 // 215 // DevCaps 216 // 217 const D3DDEVCAPS_EXECUTESYSTEMMEMORY = 0x00000010L; /* Device can use execute buffers from system memory */ 218 const D3DDEVCAPS_EXECUTEVIDEOMEMORY = 0x00000020L; /* Device can use execute buffers from video memory */ 219 const D3DDEVCAPS_TLVERTEXSYSTEMMEMORY = 0x00000040L; /* Device can use TL buffers from system memory */ 220 const D3DDEVCAPS_TLVERTEXVIDEOMEMORY = 0x00000080L; /* Device can use TL buffers from video memory */ 221 const D3DDEVCAPS_TEXTURESYSTEMMEMORY = 0x00000100L; /* Device can texture from system memory */ 222 const D3DDEVCAPS_TEXTUREVIDEOMEMORY = 0x00000200L; /* Device can texture from device memory */ 223 const D3DDEVCAPS_DRAWPRIMTLVERTEX = 0x00000400L; /* Device can draw TLVERTEX primitives */ 224 const D3DDEVCAPS_CANRENDERAFTERFLIP = 0x00000800L; /* Device can render without waiting for flip to complete */ 225 const D3DDEVCAPS_TEXTURENONLOCALVIDMEM = 0x00001000L; /* Device can texture from nonlocal video memory */ 226 const D3DDEVCAPS_DRAWPRIMITIVES2 = 0x00002000L; /* Device can support DrawPrimitives2 */ 227 const D3DDEVCAPS_SEPARATETEXTUREMEMORIES = 0x00004000L; /* Device is texturing from separate memory pools */ 228 const D3DDEVCAPS_DRAWPRIMITIVES2EX = 0x00008000L; /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/ 229 const D3DDEVCAPS_HWTRANSFORMANDLIGHT = 0x00010000L; /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */ 230 const D3DDEVCAPS_CANBLTSYSTONONLOCAL = 0x00020000L; /* Device supports a Tex Blt from system memory to non-local vidmem */ 231 const D3DDEVCAPS_HWRASTERIZATION = 0x00080000L; /* Device has HW acceleration for rasterization */ 232 const D3DDEVCAPS_PUREDEVICE = 0x00100000L; /* Device supports D3DCREATE_PUREDEVICE */ 233 const D3DDEVCAPS_QUINTICRTPATCHES = 0x00200000L; /* Device supports quintic Beziers and BSplines */ 234 const D3DDEVCAPS_RTPATCHES = 0x00400000L; /* Device supports Rect and Tri patches */ 235 const D3DDEVCAPS_RTPATCHHANDLEZERO = 0x00800000L; /* Indicates that RT Patches may be drawn efficiently using handle 0 */ 236 const D3DDEVCAPS_NPATCHES = 0x01000000L; /* Device supports N-Patches */ 237 238 // 239 // PrimitiveMiscCaps 240 // 241 const D3DPMISCCAPS_MASKZ = 0x00000002L; 242 const D3DPMISCCAPS_CULLNONE = 0x00000010L; 243 const D3DPMISCCAPS_CULLCW = 0x00000020L; 244 const D3DPMISCCAPS_CULLCCW = 0x00000040L; 245 const D3DPMISCCAPS_COLORWRITEENABLE = 0x00000080L; 246 const D3DPMISCCAPS_CLIPPLANESCALEDPOINTS = 0x00000100L; /* Device correctly clips scaled points to clip planes */ 247 const D3DPMISCCAPS_CLIPTLVERTS = 0x00000200L; /* device will clip post-transformed vertex primitives */ 248 const D3DPMISCCAPS_TSSARGTEMP = 0x00000400L; /* device supports D3DTA_TEMP for temporary register */ 249 const D3DPMISCCAPS_BLENDOP = 0x00000800L; /* device supports D3DRS_BLENDOP */ 250 const D3DPMISCCAPS_NULLREFERENCE = 0x00001000L; /* Reference Device that doesnt render */ 251 const D3DPMISCCAPS_INDEPENDENTWRITEMASKS = 0x00004000L; /* Device supports independent write masks for MET or MRT */ 252 const D3DPMISCCAPS_PERSTAGECONSTANT = 0x00008000L; /* Device supports per-stage constants */ 253 const D3DPMISCCAPS_FOGANDSPECULARALPHA = 0x00010000L; /* Device supports separate fog and specular alpha (many devices 254 use the specular alpha channel to store fog factor) */ 255 const D3DPMISCCAPS_SEPARATEALPHABLEND = 0x00020000L; /* Device supports separate blend settings for the alpha channel */ 256 const D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS = 0x00040000L; /* Device supports different bit depths for MRT */ 257 const D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING = 0x00080000L; /* Device supports post-pixel shader operations for MRT */ 258 const D3DPMISCCAPS_FOGVERTEXCLAMPED = 0x00100000L; /* Device clamps fog blend factor per vertex */ 259 260 const D3DPMISCCAPS_POSTBLENDSRGBCONVERT = 0x00200000L; /* Indicates device can perform conversion to sRGB after blending. */ 261 262 // 263 // LineCaps 264 // 265 const D3DLINECAPS_TEXTURE = 0x00000001L; 266 const D3DLINECAPS_ZTEST = 0x00000002L; 267 const D3DLINECAPS_BLEND = 0x00000004L; 268 const D3DLINECAPS_ALPHACMP = 0x00000008L; 269 const D3DLINECAPS_FOG = 0x00000010L; 270 const D3DLINECAPS_ANTIALIAS = 0x00000020L; 271 272 // 273 // RasterCaps 274 // 275 const D3DPRASTERCAPS_DITHER = 0x00000001L; 276 const D3DPRASTERCAPS_ZTEST = 0x00000010L; 277 const D3DPRASTERCAPS_FOGVERTEX = 0x00000080L; 278 const D3DPRASTERCAPS_FOGTABLE = 0x00000100L; 279 const D3DPRASTERCAPS_MIPMAPLODBIAS = 0x00002000L; 280 const D3DPRASTERCAPS_ZBUFFERLESSHSR = 0x00008000L; 281 const D3DPRASTERCAPS_FOGRANGE = 0x00010000L; 282 const D3DPRASTERCAPS_ANISOTROPY = 0x00020000L; 283 const D3DPRASTERCAPS_WBUFFER = 0x00040000L; 284 const D3DPRASTERCAPS_WFOG = 0x00100000L; 285 const D3DPRASTERCAPS_ZFOG = 0x00200000L; 286 const D3DPRASTERCAPS_COLORPERSPECTIVE = 0x00400000L; /* Device iterates colors perspective correct */ 287 const D3DPRASTERCAPS_SCISSORTEST = 0x01000000L; 288 const D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS = 0x02000000L; 289 const D3DPRASTERCAPS_DEPTHBIAS = 0x04000000L; 290 const D3DPRASTERCAPS_MULTISAMPLE_TOGGLE = 0x08000000L; 291 292 // 293 // ZCmpCaps, AlphaCmpCaps 294 // 295 const D3DPCMPCAPS_NEVER = 0x00000001L; 296 const D3DPCMPCAPS_LESS = 0x00000002L; 297 const D3DPCMPCAPS_EQUAL = 0x00000004L; 298 const D3DPCMPCAPS_LESSEQUAL = 0x00000008L; 299 const D3DPCMPCAPS_GREATER = 0x00000010L; 300 const D3DPCMPCAPS_NOTEQUAL = 0x00000020L; 301 const D3DPCMPCAPS_GREATEREQUAL = 0x00000040L; 302 const D3DPCMPCAPS_ALWAYS = 0x00000080L; 303 304 // 305 // SourceBlendCaps, DestBlendCaps 306 // 307 const D3DPBLENDCAPS_ZERO = 0x00000001L; 308 const D3DPBLENDCAPS_ONE = 0x00000002L; 309 const D3DPBLENDCAPS_SRCCOLOR = 0x00000004L; 310 const D3DPBLENDCAPS_INVSRCCOLOR = 0x00000008L; 311 const D3DPBLENDCAPS_SRCALPHA = 0x00000010L; 312 const D3DPBLENDCAPS_INVSRCALPHA = 0x00000020L; 313 const D3DPBLENDCAPS_DESTALPHA = 0x00000040L; 314 const D3DPBLENDCAPS_INVDESTALPHA = 0x00000080L; 315 const D3DPBLENDCAPS_DESTCOLOR = 0x00000100L; 316 const D3DPBLENDCAPS_INVDESTCOLOR = 0x00000200L; 317 const D3DPBLENDCAPS_SRCALPHASAT = 0x00000400L; 318 const D3DPBLENDCAPS_BOTHSRCALPHA = 0x00000800L; 319 const D3DPBLENDCAPS_BOTHINVSRCALPHA = 0x00001000L; 320 const D3DPBLENDCAPS_BLENDFACTOR = 0x00002000L; /* Supports both D3DBLEND_BLENDFACTOR and D3DBLEND_INVBLENDFACTOR */ 321 322 const D3DPBLENDCAPS_SRCCOLOR2 = 0x00004000L; 323 const D3DPBLENDCAPS_INVSRCCOLOR2 = 0x00008000L; 324 325 // 326 // ShadeCaps 327 // 328 const D3DPSHADECAPS_COLORGOURAUDRGB = 0x00000008L; 329 const D3DPSHADECAPS_SPECULARGOURAUDRGB = 0x00000200L; 330 const D3DPSHADECAPS_ALPHAGOURAUDBLEND = 0x00004000L; 331 const D3DPSHADECAPS_FOGGOURAUD = 0x00080000L; 332 333 // 334 // TextureCaps 335 // 336 const D3DPTEXTURECAPS_PERSPECTIVE = 0x00000001L; /* Perspective-correct texturing is supported */ 337 const D3DPTEXTURECAPS_POW2 = 0x00000002L; /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */ 338 const D3DPTEXTURECAPS_ALPHA = 0x00000004L; /* Alpha in texture pixels is supported */ 339 const D3DPTEXTURECAPS_SQUAREONLY = 0x00000020L; /* Only square textures are supported */ 340 const D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE = 0x00000040L; /* Texture indices are not scaled by the texture size prior to interpolation */ 341 const D3DPTEXTURECAPS_ALPHAPALETTE = 0x00000080L; /* Device can draw alpha from texture palettes */ 342 // Device can use non-POW2 textures if: 343 // 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage 344 // 2) D3DRS_WRAP(N) is zero for this texture's coordinates 345 // 3) mip mapping is not enabled (use magnification filter only) 346 const D3DPTEXTURECAPS_NONPOW2CONDITIONAL = 0x00000100L; 347 const D3DPTEXTURECAPS_PROJECTED = 0x00000400L; /* Device can do D3DTTFF_PROJECTED */ 348 const D3DPTEXTURECAPS_CUBEMAP = 0x00000800L; /* Device can do cubemap textures */ 349 const D3DPTEXTURECAPS_VOLUMEMAP = 0x00002000L; /* Device can do volume textures */ 350 const D3DPTEXTURECAPS_MIPMAP = 0x00004000L; /* Device can do mipmapped textures */ 351 const D3DPTEXTURECAPS_MIPVOLUMEMAP = 0x00008000L; /* Device can do mipmapped volume textures */ 352 const D3DPTEXTURECAPS_MIPCUBEMAP = 0x00010000L; /* Device can do mipmapped cube maps */ 353 const D3DPTEXTURECAPS_CUBEMAP_POW2 = 0x00020000L; /* Device requires that cubemaps be power-of-2 dimension */ 354 const D3DPTEXTURECAPS_VOLUMEMAP_POW2 = 0x00040000L; /* Device requires that volume maps be power-of-2 dimension */ 355 const D3DPTEXTURECAPS_NOPROJECTEDBUMPENV = 0x00200000L; /* Device does not support projected bump env lookup operation 356 in programmable and fixed function pixel shaders */ 357 358 // 359 // TextureFilterCaps, StretchRectFilterCaps 360 // 361 const D3DPTFILTERCAPS_MINFPOINT = 0x00000100L; /* Min Filter */ 362 const D3DPTFILTERCAPS_MINFLINEAR = 0x00000200L; 363 const D3DPTFILTERCAPS_MINFANISOTROPIC = 0x00000400L; 364 const D3DPTFILTERCAPS_MINFPYRAMIDALQUAD = 0x00000800L; 365 const D3DPTFILTERCAPS_MINFGAUSSIANQUAD = 0x00001000L; 366 const D3DPTFILTERCAPS_MIPFPOINT = 0x00010000L; /* Mip Filter */ 367 const D3DPTFILTERCAPS_MIPFLINEAR = 0x00020000L; 368 369 const D3DPTFILTERCAPS_CONVOLUTIONMONO = 0x00040000L; /* Min and Mag for the convolution mono filter */ 370 371 const D3DPTFILTERCAPS_MAGFPOINT = 0x01000000L; /* Mag Filter */ 372 const D3DPTFILTERCAPS_MAGFLINEAR = 0x02000000L; 373 const D3DPTFILTERCAPS_MAGFANISOTROPIC = 0x04000000L; 374 const D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD = 0x08000000L; 375 const D3DPTFILTERCAPS_MAGFGAUSSIANQUAD = 0x10000000L; 376 377 // 378 // TextureAddressCaps 379 // 380 const D3DPTADDRESSCAPS_WRAP = 0x00000001L; 381 const D3DPTADDRESSCAPS_MIRROR = 0x00000002L; 382 const D3DPTADDRESSCAPS_CLAMP = 0x00000004L; 383 const D3DPTADDRESSCAPS_BORDER = 0x00000008L; 384 const D3DPTADDRESSCAPS_INDEPENDENTUV = 0x00000010L; 385 const D3DPTADDRESSCAPS_MIRRORONCE = 0x00000020L; 386 387 // 388 // StencilCaps 389 // 390 const D3DSTENCILCAPS_KEEP = 0x00000001L; 391 const D3DSTENCILCAPS_ZERO = 0x00000002L; 392 const D3DSTENCILCAPS_REPLACE = 0x00000004L; 393 const D3DSTENCILCAPS_INCRSAT = 0x00000008L; 394 const D3DSTENCILCAPS_DECRSAT = 0x00000010L; 395 const D3DSTENCILCAPS_INVERT = 0x00000020L; 396 const D3DSTENCILCAPS_INCR = 0x00000040L; 397 const D3DSTENCILCAPS_DECR = 0x00000080L; 398 const D3DSTENCILCAPS_TWOSIDED = 0x00000100L; 399 400 // 401 // TextureOpCaps 402 // 403 const D3DTEXOPCAPS_DISABLE = 0x00000001L; 404 const D3DTEXOPCAPS_SELECTARG1 = 0x00000002L; 405 const D3DTEXOPCAPS_SELECTARG2 = 0x00000004L; 406 const D3DTEXOPCAPS_MODULATE = 0x00000008L; 407 const D3DTEXOPCAPS_MODULATE2X = 0x00000010L; 408 const D3DTEXOPCAPS_MODULATE4X = 0x00000020L; 409 const D3DTEXOPCAPS_ADD = 0x00000040L; 410 const D3DTEXOPCAPS_ADDSIGNED = 0x00000080L; 411 const D3DTEXOPCAPS_ADDSIGNED2X = 0x00000100L; 412 const D3DTEXOPCAPS_SUBTRACT = 0x00000200L; 413 const D3DTEXOPCAPS_ADDSMOOTH = 0x00000400L; 414 const D3DTEXOPCAPS_BLENDDIFFUSEALPHA = 0x00000800L; 415 const D3DTEXOPCAPS_BLENDTEXTUREALPHA = 0x00001000L; 416 const D3DTEXOPCAPS_BLENDFACTORALPHA = 0x00002000L; 417 const D3DTEXOPCAPS_BLENDTEXTUREALPHAPM = 0x00004000L; 418 const D3DTEXOPCAPS_BLENDCURRENTALPHA = 0x00008000L; 419 const D3DTEXOPCAPS_PREMODULATE = 0x00010000L; 420 const D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR = 0x00020000L; 421 const D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA = 0x00040000L; 422 const D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR = 0x00080000L; 423 const D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA = 0x00100000L; 424 const D3DTEXOPCAPS_BUMPENVMAP = 0x00200000L; 425 const D3DTEXOPCAPS_BUMPENVMAPLUMINANCE = 0x00400000L; 426 const D3DTEXOPCAPS_DOTPRODUCT3 = 0x00800000L; 427 const D3DTEXOPCAPS_MULTIPLYADD = 0x01000000L; 428 const D3DTEXOPCAPS_LERP = 0x02000000L; 429 430 // 431 // FVFCaps 432 // 433 const D3DFVFCAPS_TEXCOORDCOUNTMASK = 0x0000ffffL; /* mask for texture coordinate count field */ 434 const D3DFVFCAPS_DONOTSTRIPELEMENTS = 0x00080000L; /* Device prefers that vertex elements not be stripped */ 435 const D3DFVFCAPS_PSIZE = 0x00100000L; /* Device can receive point size */ 436 437 // 438 // VertexProcessingCaps 439 // 440 const D3DVTXPCAPS_TEXGEN = 0x00000001L; /* device can do texgen */ 441 const D3DVTXPCAPS_MATERIALSOURCE7 = 0x00000002L; /* device can do DX7-level colormaterialsource ops */ 442 const D3DVTXPCAPS_DIRECTIONALLIGHTS = 0x00000008L; /* device can do directional lights */ 443 const D3DVTXPCAPS_POSITIONALLIGHTS = 0x00000010L; /* device can do positional lights (includes point and spot) */ 444 const D3DVTXPCAPS_LOCALVIEWER = 0x00000020L; /* device can do local viewer */ 445 const D3DVTXPCAPS_TWEENING = 0x00000040L; /* device can do vertex tweening */ 446 const D3DVTXPCAPS_TEXGEN_SPHEREMAP = 0x00000100L; /* device supports D3DTSS_TCI_SPHEREMAP */ 447 const D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER = 0x00000200L; /* device does not support TexGen in non-local 448 viewer mode */ 449 450 // 451 // DevCaps2 452 // 453 const D3DDEVCAPS2_STREAMOFFSET = 0x00000001L; /* Device supports offsets in streams. Must be set by DX9 drivers */ 454 const D3DDEVCAPS2_DMAPNPATCH = 0x00000002L; /* Device supports displacement maps for N-Patches*/ 455 const D3DDEVCAPS2_ADAPTIVETESSRTPATCH = 0x00000004L; /* Device supports adaptive tesselation of RT-patches*/ 456 const D3DDEVCAPS2_ADAPTIVETESSNPATCH = 0x00000008L; /* Device supports adaptive tesselation of N-patches*/ 457 const D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES = 0x00000010L; /* Device supports StretchRect calls with a texture as the source*/ 458 const D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH = 0x00000020L; /* Device supports presampled displacement maps for N-Patches */ 459 const D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET = 0x00000040L; /* Vertex elements in a vertex declaration can share the same stream offset */ 460 461 // 462 // DeclTypes 463 // 464 const D3DDTCAPS_UBYTE4 = 0x00000001L; 465 const D3DDTCAPS_UBYTE4N = 0x00000002L; 466 const D3DDTCAPS_SHORT2N = 0x00000004L; 467 const D3DDTCAPS_SHORT4N = 0x00000008L; 468 const D3DDTCAPS_USHORT2N = 0x00000010L; 469 const D3DDTCAPS_USHORT4N = 0x00000020L; 470 const D3DDTCAPS_UDEC3 = 0x00000040L; 471 const D3DDTCAPS_DEC3N = 0x00000080L; 472 const D3DDTCAPS_FLOAT16_2 = 0x00000100L; 473 const D3DDTCAPS_FLOAT16_4 = 0x00000200L;