|
%DIRECT3D_VERSION =
&H0900
' // D3DCOLOR is equivalent to D3DFMT_A8R8G8B8
MACRO D3DCOLOR = DWORD
'// maps unsigned 8 bits/channel to D3DCOLOR
'#define D3DCOLOR_ARGB(a,r,g,b) \
' ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
'#define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b)
'#define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
'#define D3DCOLOR_XYUV(y,u,v) D3DCOLOR_ARGB(0xff,y,u,v)
'#define D3DCOLOR_AYUV(a,y,u,v) D3DCOLOR_ARGB(a,y,u,v)
'// maps floating point channels (0.f to 1.f range) to D3DCOLOR
'#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))
'/*
' * Values for clip fields.
' */
' // Max number of user clipping planes, supported in
D3D.
%D3DMAXUSERCLIPPLANES = 32
'// These bits could be ORed together to use with D3DRS_CLIPPLANEENABLE
'//
'#define D3DCLIPPLANE0 (1 << 0)
'#define D3DCLIPPLANE1 (1 << 1)
'#define D3DCLIPPLANE2 (1 << 2)
'#define D3DCLIPPLANE3 (1 << 3)
'#define D3DCLIPPLANE4 (1 << 4)
'#define D3DCLIPPLANE5 (1 << 5)
%D3DCLIPPLANE0 = 1
%D3DCLIPPLANE1 = 2
%D3DCLIPPLANE2 = 4
%D3DCLIPPLANE3 = 8
%D3DCLIPPLANE4 = 16
%D3DCLIPPLANE5 = 32
'// The following bits are used in the ClipUnion and ClipIntersection
'// members of the D3DCLIPSTATUS9
'//
%D3DCS_LEFT = &H00000001&
%D3DCS_RIGHT = &H00000002&
%D3DCS_TOP = &H00000004&
%D3DCS_BOTTOM = &H00000008&
%D3DCS_FRONT = &H00000010&
%D3DCS_BACK = &H00000020&
%D3DCS_PLANE0 = &H00000040&
%D3DCS_PLANE1 = &H00000080&
%D3DCS_PLANE2 = &H00000100&
%D3DCS_PLANE3 = &H00000200&
%D3DCS_PLANE4 = &H00000400&
%D3DCS_PLANE5 = &H00000800&
%D3DCS_ALL = %D3DCS_LEFT OR %D3DCS_RIGHT OR %D3DCS_TOP OR %D3DCS_BOTTOM OR _
%D3DCS_FRONT OR %D3DCS_BACK OR %D3DCS_PLANE0 OR %D3DCS_PLANE1 OR _
%D3DCS_PLANE2 OR %D3DCS_PLANE3 OR %D3DCS_PLANE4 OR %D3DCS_PLANE5
' // Bias to apply to the texture coordinate set to
apply a wrap to.
%D3DRENDERSTATE_WRAPBIAS = 128???
' /* Flags to construct the WRAP render states */
%D3DWRAP_U = &H00000001&
%D3DWRAP_V = &H00000002&
%D3DWRAP_W = &H00000004&
' /* Flags to construct the WRAP render states for 1D
thru 4D texture coordinates */
%D3DWRAPCOORD_0 = &H00000001& ' // same as
D3DWRAP_U
%D3DWRAPCOORD_1 = &H00000002& ' // same as D3DWRAP_V
%D3DWRAPCOORD_2 = &H00000004& ' // same as D3DWRAP_W
%D3DWRAPCOORD_3 = &H00000008&
' /* Flags to construct D3DRS_COLORWRITEENABLE */
%D3DCOLORWRITEENABLE_RED = 1 ' (1L<<0)
%D3DCOLORWRITEENABLE_GREEN = 2 ' (1L<<1)
%D3DCOLORWRITEENABLE_BLUE = 4 ' (1L<<2)
%D3DCOLORWRITEENABLE_ALPHA = 8 ' (1L<<3)
'// This is used to initialize the last vertex element
in a vertex declaration
'// array
'//
'#define D3DDECL_END() {0xFF,0,D3DDECLTYPE_UNUSED,0,0,0}
'// The internal format of Pixel Shader (PS) & Vertex
Shader (VS)
'// Instruction Tokens is defined in the Direct3D Device Driver Kit
'//
'// Instruction Token Bit Definitions
'//
%D3DSI_OPCODE_MASK = &H0000FFFF
%D3DSI_INSTLENGTH_MASK = &H0F000000
%D3DSI_INSTLENGTH_SHIFT = 24
'// Use these constants with D3DSIO_SINCOS macro as
SRC2, SRC3
'#define D3DSINCOSCONST1 -1.5500992e-006f, -2.1701389e-005f, 0.0026041667f,
0.00026041668f
'#define D3DSINCOSCONST2 -0.020833334f, -0.12500000f, 1.0f, 0.50000000f
'// Co-Issue Instruction Modifier - if set then this instruction is to be
'// issued in parallel with the previous instruction(s) for which this bit
'// is not set.
%D3DSI_COISSUE = &H40000000
'// Opcode specific controls
%D3DSP_OPCODESPECIFICCONTROL_MASK = &H00ff0000
%D3DSP_OPCODESPECIFICCONTROL_SHIFT = 16
'// ps_2_0 texld controls
'#define D3DSI_TEXLD_PROJECT (0x01 << D3DSP_OPCODESPECIFICCONTROL_SHIFT)
'#define D3DSI_TEXLD_BIAS (0x02 << D3DSP_OPCODESPECIFICCONTROL_SHIFT)
%D3DSI_TEXLD_PROJECT = &H10000
%D3DSI_TEXLD_BIAS = &H20000
'// Predication flags on instruction token
'#define D3DSHADER_INSTRUCTION_PREDICATED (0x1 << 28)
%D3DSHADER_INSTRUCTION_PREDICATED = &H10000000
'// DCL Info Token Controls
'// For dcl info tokens requiring a semantic (usage +
index)
%D3DSP_DCL_USAGE_SHIFT = 0
%D3DSP_DCL_USAGE_MASK = &H0000000f
%D3DSP_DCL_USAGEINDEX_SHIFT = 16
%D3DSP_DCL_USAGEINDEX_MASK = &H000f0000
'// DCL pixel shader sampler info token.
%D3DSP_TEXTURETYPE_SHIFT = 27
%D3DSP_TEXTURETYPE_MASK = &H78000000
'// Parameter Token Bit Definitions
%D3DSP_REGNUM_MASK = &H000007FF
'// destination parameter write mask
%D3DSP_WRITEMASK_0 = &H00010000 ' // Component
0 (X;Red)
%D3DSP_WRITEMASK_1 = &H00020000 ' // Component 1
(Y;Green)
%D3DSP_WRITEMASK_2 = &H00040000 ' // Component 2
(Z;Blue)
%D3DSP_WRITEMASK_3 = &H00080000 ' // Component 3
(W;Alpha)
%D3DSP_WRITEMASK_ALL = &H000F0000 ' // All Components
'// destination parameter modifiers
%D3DSP_DSTMOD_SHIFT = 20
%D3DSP_DSTMOD_MASK = &H00F00000
'// Bit masks for destination parameter modifiers
'#define D3DSPDM_NONE (0<<D3DSP_DSTMOD_SHIFT) // nop
'#define D3DSPDM_SATURATE (1<<D3DSP_DSTMOD_SHIFT) // clamp to 0. to 1. range
'#define D3DSPDM_PARTIALPRECISION (2<<D3DSP_DSTMOD_SHIFT) // Partial
precision hint
'#define D3DSPDM_MSAMPCENTROID (4<<D3DSP_DSTMOD_SHIFT) // Relevant to
multisampling only:
' // When the pixel center is not covered, sample
' // attribute or compute gradients/LOD
' // using multisample "centroid" location.
' // "Centroid" is some location within the covered
' // region of the pixel.
%D3DSPDM_NONE = &H0 ' // nop
%D3DSPDM_SATURATE = &H100000 ' // clamp to 0. to 1.
range
%D3DSPDM_PARTIALPRECISION = &H200000 ' //
Partial precision hint
%D3DSPDM_MSAMPCENTROID = &H400000 ' // Relevant
to multisampling only:
'// destination parameter
%D3DSP_DSTSHIFT_SHIFT = 24
%D3DSP_DSTSHIFT_MASK = &H0F000000
'// destination/source parameter register type
%D3DSP_REGTYPE_SHIFT = 28
%D3DSP_REGTYPE_SHIFT2 = 8
%D3DSP_REGTYPE_MASK = &H70000000
%D3DSP_REGTYPE_MASK2 = &H00001800
' D3DSHADER_MISCTYPE_OFFSETS enumeration
'// The miscellaneous register file (D3DSPR_MISCTYPES)
'// contains register types for which there is only ever one
'// register (i.e. the register # is not needed).
'// Rather than use up additional register types for such
'// registers, they are defined
'// as particular offsets into the misc. register file:
%D3DSMO_POSITION = 0 ' // Input position x,y,z,rhw (PS)
%D3DSMO_FACE = 1 ' // Floating point primitive area (PS)
'// Register offsets in the Rasterizer Register File
'//
' D3DVS_RASTOUT_OFFSETS enumeration
%D3DSRO_POSITION = 0
%D3DSRO_FOG = 1
%D3DSRO_POINT_SIZE = 2
%D3DSRO_FORCE_DWORD = &H7FFFFFFF ' // force 32-bit
size enum
'// Source operand addressing modes
%D3DVS_ADDRESSMODE_SHIFT = 13
'#define D3DVS_ADDRESSMODE_MASK (1 <<
D3DVS_ADDRESSMODE_SHIFT)
%D3DVS_ADDRESSMODE_MASK = &H2000
' D3DVS_ADDRESSMODE_TYPE enumeration
' D3DVS_ADDRMODE_ABSOLUTE = (0 << D3DVS_ADDRESSMODE_SHIFT),
' D3DVS_ADDRMODE_RELATIVE = (1 << D3DVS_ADDRESSMODE_SHIFT),
' D3DVS_ADDRMODE_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
%D3DVS_ADDRMODE_ABSOLUTE = &H0
%D3DVS_ADDRMODE_RELATIVE = &H2000
%D3DVS_ADDRMODE_FORCE_DWORD = &H7FFFFFFF ' // force
32-bit size enum
%D3DSHADER_ADDRESSMODE_SHIFT = 13
'#define D3DSHADER_ADDRESSMODE_MASK (1 <<
D3DSHADER_ADDRESSMODE_SHIFT)
%D3DSHADER_ADDRESSMODE_MASK = &H2000
' D3DSHADER_ADDRESSMODE_TYPE enumeration
' D3DSHADER_ADDRMODE_ABSOLUTE = (0 << D3DSHADER_ADDRESSMODE_SHIFT),
' D3DSHADER_ADDRMODE_RELATIVE = (1 << D3DSHADER_ADDRESSMODE_SHIFT),
' D3DSHADER_ADDRMODE_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
%D3DSHADER_ADDRMODE_ABSOLUTE = &H0
%D3DSHADER_ADDRMODE_RELATIVE = &H2000
%D3DSHADER_ADDRMODE_FORCE_DWORD = &H7FFFFFFF ' //
force 32-bit size enum
'// Source operand swizzle definitions
'//
%D3DVS_SWIZZLE_SHIFT = 16
%D3DVS_SWIZZLE_MASK = &H00FF0000
'// The following bits define where to take component
X from:
'#define D3DVS_X_X (0 << D3DVS_SWIZZLE_SHIFT)
'#define D3DVS_X_Y (1 << D3DVS_SWIZZLE_SHIFT)
'#define D3DVS_X_Z (2 << D3DVS_SWIZZLE_SHIFT)
'#define D3DVS_X_W (3 << D3DVS_SWIZZLE_SHIFT)
%D3DVS_X_X = &H0
%D3DVS_X_Y = &H10000
%D3DVS_X_Z = &H20000
%D3DVS_X_W = &H30000
'// The following bits define where to take component
Y from:
'#define D3DVS_Y_X (0 << (D3DVS_SWIZZLE_SHIFT + 2))
'#define D3DVS_Y_Y (1 << (D3DVS_SWIZZLE_SHIFT + 2))
'#define D3DVS_Y_Z (2 << (D3DVS_SWIZZLE_SHIFT + 2))
'#define D3DVS_Y_W (3 << (D3DVS_SWIZZLE_SHIFT + 2))
%D3DVS_Y_X = &H0
%D3DVS_Y_Y = &H40000
%D3DVS_Y_Z = &H80000
%D3DVS_Y_W = &HC0000
'// The following bits define where to take component
Z from:
'#define D3DVS_Z_X (0 << (D3DVS_SWIZZLE_SHIFT + 4))
'#define D3DVS_Z_Y (1 << (D3DVS_SWIZZLE_SHIFT + 4))
'#define D3DVS_Z_Z (2 << (D3DVS_SWIZZLE_SHIFT + 4))
'#define D3DVS_Z_W (3 << (D3DVS_SWIZZLE_SHIFT + 4))
%D3DVS_Z_X = &H0
%D3DVS_Z_Y = &H100000
%D3DVS_Z_Z = &H200000
%D3DVS_Z_W = &H300000
'// The following bits define where to take component
W from:
'#define D3DVS_W_X (0 << (D3DVS_SWIZZLE_SHIFT + 6))
'#define D3DVS_W_Y (1 << (D3DVS_SWIZZLE_SHIFT + 6))
'#define D3DVS_W_Z (2 << (D3DVS_SWIZZLE_SHIFT + 6))
'#define D3DVS_W_W (3 << (D3DVS_SWIZZLE_SHIFT + 6))
%D3DVS_W_X = &H0
%D3DVS_W_Y = &H400000
%D3DVS_W_Z = &H800000
%D3DVS_W_W = &HC00000
'// Value when there is no swizzle (X is taken from X,
Y is taken from Y,
'// Z is taken from Z, W is taken from W
'//
'#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
%D3DVS_NOSWIZZLE = %D3DVS_X_X OR %D3DVS_Y_Y OR %D3DVS_Z_Z OR
%D3DVS_W_W
'// source parameter swizzle
%D3DSP_SWIZZLE_SHIFT = 16
%D3DSP_SWIZZLE_MASK = &H00FF0000
'#define D3DSP_NOSWIZZLE \
' ( (0 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
' (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
' (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
' (3 << (D3DSP_SWIZZLE_SHIFT + 6)) )
%D3DSP_NOSWIZZLE = &H0 OR &H40000 OR &H200000 OR &HC00000
'// pixel-shader swizzle ops
'#define D3DSP_REPLICATERED \
' ( (0 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
' (0 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
' (0 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
' (0 << (D3DSP_SWIZZLE_SHIFT + 6)) )
%D3DSP_REPLICATERED = &H0
'#define D3DSP_REPLICATEGREEN \
' ( (1 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
' (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
' (1 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
' (1 << (D3DSP_SWIZZLE_SHIFT + 6)) )
%D3DSP_REPLICATEGREEN = &H10000 OR &H40000 OR &H100000 OR &H400000
'#define D3DSP_REPLICATEBLUE \
' ( (2 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
' (2 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
' (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
' (2 << (D3DSP_SWIZZLE_SHIFT + 6)) )
%D3DSP_REPLICATEBLUE = &H20000 OR &H80000 OR &H200000 OR &H800000
'#define D3DSP_REPLICATEALPHA \
' ( (3 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
' (3 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
' (3 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
' (3 << (D3DSP_SWIZZLE_SHIFT + 6)) )
%D3DSP_REPLICATEALPHA = &H30000 OR &HC0000 OR &H300000 OR &HC00000
'// source parameter modifiers
%D3DSP_SRCMOD_SHIFT = 24
%D3DSP_SRCMOD_MASK = &H0F000000
' D3DSHADER_PARAM_SRCMOD_TYPE enumeration
' D3DSPSM_NONE = 0<<D3DSP_SRCMOD_SHIFT, // nop
' D3DSPSM_NEG = 1<<D3DSP_SRCMOD_SHIFT, // negate
' D3DSPSM_BIAS = 2<<D3DSP_SRCMOD_SHIFT, // bias
' D3DSPSM_BIASNEG = 3<<D3DSP_SRCMOD_SHIFT, // bias and negate
' D3DSPSM_SIGN = 4<<D3DSP_SRCMOD_SHIFT, // sign
' D3DSPSM_SIGNNEG = 5<<D3DSP_SRCMOD_SHIFT, // sign and negate
' D3DSPSM_COMP = 6<<D3DSP_SRCMOD_SHIFT, // complement
' D3DSPSM_X2 = 7<<D3DSP_SRCMOD_SHIFT, // *2
' D3DSPSM_X2NEG = 8<<D3DSP_SRCMOD_SHIFT, // *2 and negate
' D3DSPSM_DZ = 9<<D3DSP_SRCMOD_SHIFT, // divide through by z component
' D3DSPSM_DW = 10<<D3DSP_SRCMOD_SHIFT, // divide through by w component
' D3DSPSM_ABS = 11<<D3DSP_SRCMOD_SHIFT, // abs()
' D3DSPSM_ABSNEG = 12<<D3DSP_SRCMOD_SHIFT, // -abs()
' D3DSPSM_NOT = 13<<D3DSP_SRCMOD_SHIFT, // for predicate register: "!p0"
' D3DSPSM_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
%D3DSPSM_NONE = &H0 ' // nop
%D3DSPSM_NEG = &H1000000 ' // negate
%D3DSPSM_BIAS = &H2000000 ' // bias
%D3DSPSM_BIASNEG = &H3000000 ' // bias and negate
%D3DSPSM_SIGN = &H4000000 ' // sign
%D3DSPSM_SIGNNEG = &H5000000 ' // sign and negate
%D3DSPSM_COMP = &H6000000 ' // complement
%D3DSPSM_X2 = &H7000000 ' // *2
%D3DSPSM_X2NEG = &H8000000 ' // *2 and negate
%D3DSPSM_DZ = &H9000000 ' // divide through by z
component
%D3DSPSM_DW = &HA000000 ' // divide through by w
component
%D3DSPSM_ABS = &HB000000 ' // abs()
%D3DSPSM_ABSNEG = &HC000000 ' // -abs()
%D3DSPSM_NOT = &HD000000 ' // for predicate register:
"!p0"
%D3DSPSM_FORCE_DWORD = &H7FFFFFFF ' // force 32-bit
size enum
'// pixel shader version token
'#define D3DPS_VERSION(_Major,_Minor) (0xFFFF0000|((_Major)<<8)|(_Minor))
'// vertex shader version token
'#define D3DVS_VERSION(_Major,_Minor) (0xFFFE0000|((_Major)<<8)|(_Minor))
'// extract major/minor from version cap
'#define D3DSHADER_VERSION_MAJOR(_Version) (((_Version)>>8)&0xFF)
'#define D3DSHADER_VERSION_MINOR(_Version) (((_Version)>>0)&0xFF)
'// destination/source parameter register type
%D3DSI_COMMENTSIZE_SHIFT = 16
%D3DSI_COMMENTSIZE_MASK = &H7FFF0000
'#define D3DSHADER_COMMENT(_DWordSize) \
'
((((_DWordSize)<<D3DSI_COMMENTSIZE_SHIFT)&D3DSI_COMMENTSIZE_MASK)|D3DSIO_COMMENT)
'// pixel/vertex shader end token
'#define D3DPS_END() 0x0000FFFF
'#define D3DVS_END() 0x0000FFFF
'// Macros to set texture coordinate format bits in
the FVF id
%D3DFVF_TEXTUREFORMAT2 = 0 ' // Two floating point
values
%D3DFVF_TEXTUREFORMAT1 = 3 ' // One floating point
value
%D3DFVF_TEXTUREFORMAT3 = 1 ' // Three floating point
values
%D3DFVF_TEXTUREFORMAT4 = 2 ' // Four floating point
values
'#define D3DFVF_TEXCOORDSIZE3(CoordIndex)
(D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
'#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
'#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 <<
(CoordIndex*2 + 16))
'#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 <<
(CoordIndex*2 + 16))
%D3DFVF_TEXCOORDSIZE1_0 = &H30000
%D3DFVF_TEXCOORDSIZE1_1 = &HC0000
%D3DFVF_TEXCOORDSIZE1_2 = &H300000
%D3DFVF_TEXCOORDSIZE1_3 = &HC00000
%D3DFVF_TEXCOORDSIZE2_0 = &H0
%D3DFVF_TEXCOORDSIZE2_1 = &H0
%D3DFVF_TEXCOORDSIZE2_2 = &H0
%D3DFVF_TEXCOORDSIZE2_3 = &H0
%D3DFVF_TEXCOORDSIZE3_0 = &H10000
%D3DFVF_TEXCOORDSIZE3_1 = &H40000
%D3DFVF_TEXCOORDSIZE3_2 = &H100000
%D3DFVF_TEXCOORDSIZE3_3 = &H400000
%D3DFVF_TEXCOORDSIZE4_0 = &H20000
%D3DFVF_TEXCOORDSIZE4_1 = &H80000
%D3DFVF_TEXCOORDSIZE4_2 = &H200000
%D3DFVF_TEXCOORDSIZE4_3 = &H800000
'/* Formats
' * Most of these names have the following convention:
' * A = Alpha
' * R = Red
' * G = Green
' * B = Blue
' * X = Unused Bits
' * P = Palette
' * L = Luminance
' * U = dU coordinate for BumpMap
' * V = dV coordinate for BumpMap
' * S = Stencil
' * D = Depth (e.g. Z or W buffer)
' * C = Computed from other channels (typically on certain read operations)
' *
' * Further, the order of the pieces are from MSB first; hence
' * D3DFMT_A8L8 indicates that the high byte of this two byte
' * format is alpha.
' *
' * D3DFMT_D16_LOCKABLE indicates:
' * - An integer 16-bit value.
' * - An app-lockable surface.
' *
' * D3DFMT_D32F_LOCKABLE indicates:
' * - An IEEE 754 floating-point value.
' * - An app-lockable surface.
' *
' * All Depth/Stencil formats except D3DFMT_D16_LOCKABLE and
D3DFMT_D32F_LOCKABLE indicate:
' * - no particular bit ordering per pixel, and
' * - are not app lockable, and
' * - the driver is allowed to consume more than the indicated
' * number of bits per Depth channel (but not Stencil channel).
' */
'#ifndef MAKEFOURCC
' #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
' ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
' ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
'#endif /* defined(MAKEFOURCC) */
FUNCTION MAKEFOURCC (BYVAL
st0 AS STRING, BYVAL
st1 AS STRING, BYVAL
st2 AS STRING, BYVAL
st3 AS STRING) AS DWORD
LOCAL ch0 AS DWORD,
ch1 AS DWORD, ch2 AS
DWORD, ch3 AS DWORD
ch0 = ASC(st0)
ch1 = ASC(st1)
ch2 = ASC(st2)
ch3 = ASC(st3)
SHIFT LEFT ch1, 8
SHIFT LEFT ch2, 16
SHIFT LEFT ch3, 24
FUNCTION = ch0 OR ch1 OR ch2 OR ch3
END FUNCTION
'/* Adapter Identifier */
%MAX_DEVICE_IDENTIFIER_STRING = 512
'// Flags field for Issue
%D3DISSUE_END = 1 ' (1 << 0) // Tells the
runtime to issue the end of a query, changing it's state to "non-signaled".
%D3DISSUE_BEGIN = 2 ' (1 << 1) // Tells the runtime to
issue the beginng of a query.
'// Flags field for GetData
%D3DGETDATA_FLUSH = 1 ' (1 << 0) // Tells the
runtime to flush if the query is outstanding.
%D3DMIN30SHADERINSTRUCTIONS = 512
%D3DMAX30SHADERINSTRUCTIONS = 32768
'//
'// BIT DEFINES FOR D3DCAPS9 DWORD MEMBERS
'//
'//
'// Caps
'//
%D3DCAPS_READ_SCANLINE = &H00020000&
'//
'// DevCaps
'//
%D3DDEVCAPS_EXECUTESYSTEMMEMORY = &H00000010& '
/* Device can use execute buffers from system memory */
%D3DDEVCAPS_EXECUTEVIDEOMEMORY = &H00000020& ' /*
Device can use execute buffers from video memory */
%D3DDEVCAPS_TLVERTEXSYSTEMMEMORY = &H00000040& ' /*
Device can use TL buffers from system memory */
%D3DDEVCAPS_TLVERTEXVIDEOMEMORY = &H00000080& ' /*
Device can use TL buffers from video memory */
%D3DDEVCAPS_TEXTURESYSTEMMEMORY = &H00000100& ' /*
Device can texture from system memory */
%D3DDEVCAPS_TEXTUREVIDEOMEMORY = &H00000200& ' /*
Device can texture from device memory */
%D3DDEVCAPS_DRAWPRIMTLVERTEX = &H00000400& ' /*
Device can draw TLVERTEX primitives */
%D3DDEVCAPS_CANRENDERAFTERFLIP = &H00000800& '
/* Device can render without waiting for flip to complete */
%D3DDEVCAPS_TEXTURENONLOCALVIDMEM = &H00001000& ' /*
Device can texture from nonlocal video memory */
%D3DDEVCAPS_DRAWPRIMITIVES2 = &H00002000& ' /* Device
can support DrawPrimitives2 */
%D3DDEVCAPS_SEPARATETEXTUREMEMORIES = &H00004000&
' /* Device is texturing from separate memory pools */
%D3DDEVCAPS_DRAWPRIMITIVES2EX = &H00008000& ' /*
Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
%D3DDEVCAPS_HWTRANSFORMANDLIGHT = &H00010000& ' /*
Device can support transformation and lighting in hardware and
DRAWPRIMITIVES2EX must be also */
%D3DDEVCAPS_CANBLTSYSTONONLOCAL = &H00020000& ' /*
Device supports a Tex Blt from system memory to non-local vidmem */
%D3DDEVCAPS_HWRASTERIZATION = &H00080000& ' /* Device
has HW acceleration for rasterization */
%D3DDEVCAPS_PUREDEVICE = &H00100000& ' /* Device
supports D3DCREATE_PUREDEVICE */
%D3DDEVCAPS_QUINTICRTPATCHES = &H00200000& ' /*
Device supports quintic Beziers and BSplines */
%D3DDEVCAPS_RTPATCHES = &H00400000& ' /* Device
supports Rect and Tri patches */
%D3DDEVCAPS_RTPATCHHANDLEZERO = &H00800000& '
/* Indicates that RT Patches may be drawn efficiently using handle 0 */
%D3DDEVCAPS_NPATCHES = &H01000000& ' /* Device
supports N-Patches */
'//
'// LineCaps
'//
%D3DLINECAPS_TEXTURE = &H00000001&
%D3DLINECAPS_ZTEST = &H00000002&
%D3DLINECAPS_BLEND = &H00000004&
%D3DLINECAPS_ALPHACMP = &H00000008&
%D3DLINECAPS_FOG = &H00000010&
%D3DLINECAPS_ANTIALIAS = &H00000020&
'//
'// RasterCaps
'//
%D3DPRASTERCAPS_DITHER = &H00000001&
%D3DPRASTERCAPS_ZTEST = &H00000010&
%D3DPRASTERCAPS_FOGVERTEX = &H00000080&
%D3DPRASTERCAPS_FOGTABLE = &H00000100&
%D3DPRASTERCAPS_MIPMAPLODBIAS = &H00002000&
%D3DPRASTERCAPS_ZBUFFERLESSHSR = &H00008000&
%D3DPRASTERCAPS_FOGRANGE = &H00010000&
%D3DPRASTERCAPS_ANISOTROPY = &H00020000&
%D3DPRASTERCAPS_WBUFFER = &H00040000&
%D3DPRASTERCAPS_WFOG = &H00100000&
%D3DPRASTERCAPS_ZFOG = &H00200000&
%D3DPRASTERCAPS_COLORPERSPECTIVE = &H00400000& ' /*
Device iterates colors perspective correct */
%D3DPRASTERCAPS_SCISSORTEST = &H01000000&
%D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS = &H02000000&
%D3DPRASTERCAPS_DEPTHBIAS = &H04000000&
%D3DPRASTERCAPS_MULTISAMPLE_TOGGLE = &H08000000&
'//
'// ZCmpCaps, AlphaCmpCaps
'//
%D3DPCMPCAPS_NEVER = &H00000001&
%D3DPCMPCAPS_LESS = &H00000002&
%D3DPCMPCAPS_EQUAL = &H00000004&
%D3DPCMPCAPS_LESSEQUAL = &H00000008&
%D3DPCMPCAPS_GREATER = &H00000010&
%D3DPCMPCAPS_NOTEQUAL = &H00000020&
%D3DPCMPCAPS_GREATEREQUAL = &H00000040&
%D3DPCMPCAPS_ALWAYS = &H00000080&
'//
'// SourceBlendCaps, DestBlendCaps
'//
%D3DPBLENDCAPS_ZERO = &H00000001&
%D3DPBLENDCAPS_ONE = &H00000002&
%D3DPBLENDCAPS_SRCCOLOR = &H00000004&
%D3DPBLENDCAPS_INVSRCCOLOR = &H00000008&
%D3DPBLENDCAPS_SRCALPHA = &H00000010&
%D3DPBLENDCAPS_INVSRCALPHA = &H00000020&
%D3DPBLENDCAPS_DESTALPHA = &H00000040&
%D3DPBLENDCAPS_INVDESTALPHA = &H00000080&
%D3DPBLENDCAPS_DESTCOLOR = &H00000100&
%D3DPBLENDCAPS_INVDESTCOLOR = &H00000200&
%D3DPBLENDCAPS_SRCALPHASAT = &H00000400&
%D3DPBLENDCAPS_BOTHSRCALPHA = &H00000800&
%D3DPBLENDCAPS_BOTHINVSRCALPHA = &H00001000&
%D3DPBLENDCAPS_BLENDFACTOR = &H00002000& ' /* Supports
both D3DBLEND_BLENDFACTOR and D3DBLEND_INVBLENDFACTOR */
'//
'// ShadeCaps
'//
%D3DPSHADECAPS_COLORGOURAUDRGB = &H00000008&
%D3DPSHADECAPS_SPECULARGOURAUDRGB = &H00000200&
%D3DPSHADECAPS_ALPHAGOURAUDBLEND = &H00004000&
%D3DPSHADECAPS_FOGGOURAUD = &H00080000&
'//
'// TextureCaps
'//
%D3DPTEXTURECAPS_PERSPECTIVE = &H00000001& ' /*
Perspective-correct texturing is supported */
%D3DPTEXTURECAPS_POW2 = &H00000002& ' /* Power-of-2
texture dimensions are required - applies to non-Cube/Volume textures only.
*/
%D3DPTEXTURECAPS_ALPHA = &H00000004& ' /* Alpha in
texture pixels is supported */
%D3DPTEXTURECAPS_SQUAREONLY = &H00000020& ' /*
Only square textures are supported */
%D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE = &H00000040&
' /* Texture indices are not scaled by the texture
size prior to interpolation */
%D3DPTEXTURECAPS_ALPHAPALETTE = &H00000080& ' /*
Device can draw alpha from texture palettes */
'// Device can use non-POW2 textures if:
'// 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
'// 2) D3DRS_WRAP(N) is zero for this texture's coordinates
'// 3) mip mapping is not enabled (use magnification filter only)
%D3DPTEXTURECAPS_NONPOW2CONDITIONAL = &H00000100&
%D3DPTEXTURECAPS_PROJECTED = &H00000400& ' /* Device
can do D3DTTFF_PROJECTED */
%D3DPTEXTURECAPS_CUBEMAP = &H00000800& ' /*
Device can do cubemap textures */
%D3DPTEXTURECAPS_VOLUMEMAP = &H00002000& ' /*
Device can do volume textures */
%D3DPTEXTURECAPS_MIPMAP = &H00004000& ' /*
Device can do mipmapped textures */
%D3DPTEXTURECAPS_MIPVOLUMEMAP = &H00008000& '
/* Device can do mipmapped volume textures */
%D3DPTEXTURECAPS_MIPCUBEMAP = &H00010000& ' /* Device
can do mipmapped cube maps */
%D3DPTEXTURECAPS_CUBEMAP_POW2 = &H00020000& '
/* Device requires that cubemaps be power-of-2 dimension */
%D3DPTEXTURECAPS_VOLUMEMAP_POW2 = &H00040000& ' /*
Device requires that volume maps be power-of-2 dimension */
%D3DPTEXTURECAPS_NOPROJECTEDBUMPENV = &H00200000& ' /*
Device does not support projected bump env lookup operation
' in programmable and fixed function pixel shaders */
'//
'// TextureAddressCaps
'//
%D3DPTADDRESSCAPS_WRAP = &H00000001&
%D3DPTADDRESSCAPS_MIRROR = &H00000002&
%D3DPTADDRESSCAPS_CLAMP = &H00000004&
%D3DPTADDRESSCAPS_BORDER = &H00000008&
%D3DPTADDRESSCAPS_INDEPENDENTUV = &H00000010&
%D3DPTADDRESSCAPS_MIRRORONCE = &H00000020&
'//
'// TextureOpCaps
'//
%D3DTEXOPCAPS_DISABLE = &H00000001&
%D3DTEXOPCAPS_SELECTARG1 = &H00000002&
%D3DTEXOPCAPS_SELECTARG2 = &H00000004&
%D3DTEXOPCAPS_MODULATE = &H00000008&
%D3DTEXOPCAPS_MODULATE2X = &H00000010&
%D3DTEXOPCAPS_MODULATE4X = &H00000020&
%D3DTEXOPCAPS_ADD = &H00000040&
%D3DTEXOPCAPS_ADDSIGNED = &H00000080&
%D3DTEXOPCAPS_ADDSIGNED2X = &H00000100&
%D3DTEXOPCAPS_SUBTRACT = &H00000200&
%D3DTEXOPCAPS_ADDSMOOTH = &H00000400&
%D3DTEXOPCAPS_BLENDDIFFUSEALPHA = &H00000800&
%D3DTEXOPCAPS_BLENDTEXTUREALPHA = &H00001000&
%D3DTEXOPCAPS_BLENDFACTORALPHA = &H00002000&
%D3DTEXOPCAPS_BLENDTEXTUREALPHAPM = &H00004000&
%D3DTEXOPCAPS_BLENDCURRENTALPHA = &H00008000&
%D3DTEXOPCAPS_PREMODULATE = &H00010000&
%D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR = &H00020000&
%D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA = &H00040000&
%D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR = &H00080000&
%D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA = &H00100000&
%D3DTEXOPCAPS_BUMPENVMAP = &H00200000&
%D3DTEXOPCAPS_BUMPENVMAPLUMINANCE = &H00400000&
%D3DTEXOPCAPS_DOTPRODUCT3 = &H00800000&
%D3DTEXOPCAPS_MULTIPLYADD = &H01000000&
%D3DTEXOPCAPS_LERP = &H02000000&
'//
'// FVFCaps
'//
%D3DFVFCAPS_TEXCOORDCOUNTMASK = &H0000FFFF& ' /* mask
for texture coordinate count field */
%D3DFVFCAPS_DONOTSTRIPELEMENTS = &H00080000& ' /*
Device prefers that vertex elements not be stripped */
%D3DFVFCAPS_PSIZE = &H00100000& ' /* Device can
receive point size */
' * Flags for SetPrivateData method on all D3D9
interfaces
' *
' * The passed pointer is an IUnknown ptr. The SizeOfData argument to
SetPrivateData
' * must be set to sizeof(IUnknown*). Direct3D will call AddRef through this
' * pointer and Release when the private data is destroyed. The data will be
' * destroyed when another SetPrivateData with the same GUID is set, when
' * FreePrivateData is called, or when the D3D9 object is freed.
%D3DSPD_IUNKNOWN =
&H00000001&
' * Flags for IDirect3DDevice9::SetGammaRamp
%D3DSGR_NO_CALIBRATION = &H00000000&
%D3DSGR_CALIBRATE = &H00000001&
' * Flags for IDirect3DDevice9::SetCursorPosition
%D3DCURSOR_IMMEDIATE_UPDATE = &H00000001&
' * Flags for IDirect3DSwapChain9::Present
%D3DPRESENT_DONOTWAIT = &H00000001&
%D3DPRESENT_LINEAR_CONTENT = &H00000002&
|