📄 directxgraphics.pas
字号:
D3DSIO_PHASE = $FFFD{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
{$ENDIF}
D3DSIO_COMMENT = $FFFE{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_END = $FFFF{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum
type TD3DShader_Instruction_Opcode_Type = TD3DShaderInstructionOpcodeType;
// 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.
const
D3DSI_COISSUE = $40000000;
//
// Parameter Token Bit Definitions
//
{$IFDEF DX8}
D3DSP_REGNUM_MASK = $00000FFF;
{$ELSE}
D3DSP_REGNUM_MASK = $00001FFF;
{$ENDIF}
// destination parameter write mask
D3DSP_WRITEMASK_0 = $00010000; // Component 0 (X;Red)
D3DSP_WRITEMASK_1 = $00020000; // Component 1 (Y;Green)
D3DSP_WRITEMASK_2 = $00040000; // Component 2 (Z;Blue)
D3DSP_WRITEMASK_3 = $00080000; // Component 3 (W;Alpha)
D3DSP_WRITEMASK_ALL = $000F0000; // All Components
// destination parameter modifiers
D3DSP_DSTMOD_SHIFT = 20;
D3DSP_DSTMOD_MASK = $00F00000;
type TD3DShaderParamDSTModType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DSPDM_NONE = 0 shl D3DSP_DSTMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // nop
D3DSPDM_SATURATE = 1 shl D3DSP_DSTMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // clamp to 0. to 1. range
// destination parameter
D3DSP_DSTSHIFT_SHIFT = 24{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSP_DSTSHIFT_MASK = $0F000000{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
// destination/source parameter register type
D3DSP_REGTYPE_SHIFT = 28{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSP_REGTYPE_MASK = $70000000{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSPDM_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum
type TD3DShader_Param_DSTMod_Type = TD3DShaderParamDSTModType;
type TD3DShaderParamRegisterType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DSPR_TEMP = 0 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Temporary Register File
D3DSPR_INPUT = 1 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Input Register File
D3DSPR_CONST = 2 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Register File
D3DSPR_ADDR = 3 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Address Register (VS)
D3DSPR_TEXTURE = 3 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Texture Register File (PS)
D3DSPR_RASTOUT = 4 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Rasterizer Register File
D3DSPR_ATTROUT = 5 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Attribute Output Register File
D3DSPR_TEXCRDOUT = 6 shl LongWord(D3DSP_REGTYPE_SHIFT){$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Texture Coordinate Output Register File
D3DSPR_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum
type TD3DShader_Param_Register_Type = TD3DShaderParamRegisterType;
// Register offsets in the Rasterizer Register File
type TD3DVSRastOutOffsets = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DSRO_POSITION = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSRO_FOG = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSRO_POINT_SIZE = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSRO_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum
type TD3DVS_RastOut_Offsets = TD3DVSRastOutOffsets;
// Source operand addressing modes
const
D3DVS_ADDRESSMODE_SHIFT = 13;
D3DVS_ADDRESSMODE_MASK = 1 shl D3DVS_ADDRESSMODE_SHIFT;
type TD3DVSAddressModeType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DVS_ADDRMODE_ABSOLUTE = 0 shl D3DVS_ADDRESSMODE_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DVS_ADDRMODE_RELATIVE = 1 shl D3DVS_ADDRESSMODE_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Relative to register A0
D3DVS_ADDRMODE_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum
type TD3DVS_AddressMode_Type = TD3DVSAddressModeType;
const
// Source operand swizzle definitions
//
D3DVS_SWIZZLE_SHIFT = 16;
D3DVS_SWIZZLE_MASK = $00FF0000;
// The following bits define where to take component X from:
D3DVS_X_X = 0 shl D3DVS_SWIZZLE_SHIFT;
D3DVS_X_Y = 1 shl D3DVS_SWIZZLE_SHIFT;
D3DVS_X_Z = 2 shl D3DVS_SWIZZLE_SHIFT;
D3DVS_X_W = 3 shl D3DVS_SWIZZLE_SHIFT;
// The following bits define where to take component Y from:
D3DVS_Y_X = 0 shl (D3DVS_SWIZZLE_SHIFT + 2);
D3DVS_Y_Y = 1 shl (D3DVS_SWIZZLE_SHIFT + 2);
D3DVS_Y_Z = 2 shl (D3DVS_SWIZZLE_SHIFT + 2);
D3DVS_Y_W = 3 shl (D3DVS_SWIZZLE_SHIFT + 2);
// The following bits define where to take component Z from:
D3DVS_Z_X = 0 shl (D3DVS_SWIZZLE_SHIFT + 4);
D3DVS_Z_Y = 1 shl (D3DVS_SWIZZLE_SHIFT + 4);
D3DVS_Z_Z = 2 shl (D3DVS_SWIZZLE_SHIFT + 4);
D3DVS_Z_W = 3 shl (D3DVS_SWIZZLE_SHIFT + 4);
// The following bits define where to take component W from:
D3DVS_W_X = 0 shl (D3DVS_SWIZZLE_SHIFT + 6);
D3DVS_W_Y = 1 shl (D3DVS_SWIZZLE_SHIFT + 6);
D3DVS_W_Z = 2 shl (D3DVS_SWIZZLE_SHIFT + 6);
D3DVS_W_W = 3 shl (D3DVS_SWIZZLE_SHIFT + 6);
// 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
//
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 = $00FF0000;
D3DSP_NOSWIZZLE = (0 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
(1 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
(2 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
(3 shl (D3DSP_SWIZZLE_SHIFT + 6));
// pixel-shader swizzle ops
{$IFNDEF DX8}
D3DSP_REPLICATERED = (0 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
(0 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
(0 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
(0 shl (D3DSP_SWIZZLE_SHIFT + 6));
D3DSP_REPLICATEGREEN = (1 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
(1 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
(1 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
(1 shl (D3DSP_SWIZZLE_SHIFT + 6));
D3DSP_REPLICATEBLUE = (2 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
(2 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
(2 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
(2 shl (D3DSP_SWIZZLE_SHIFT + 6));
{$ENDIF}
D3DSP_REPLICATEALPHA = (3 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
(3 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
(3 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
(3 shl (D3DSP_SWIZZLE_SHIFT + 6));
// source parameter modifiers
D3DSP_SRCMOD_SHIFT = 24;
D3DSP_SRCMOD_MASK = $0F000000;
type TD3DShaderParamSRCModType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DSPSM_NONE = 0 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // nop
D3DSPSM_NEG = 1 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // negate
D3DSPSM_BIAS = 2 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // bias
D3DSPSM_BIASNEG = 3 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // bias and negate
D3DSPSM_SIGN = 4 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // sign
D3DSPSM_SIGNNEG = 5 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // sign and negate
D3DSPSM_COMP = 6 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // complement
{$IFNDEF DX8}
D3DSPSM_X2 = 7 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // *2
D3DSPSM_X2NEG = 8 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // *2 and negate
D3DSPSM_DZ = 9 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // divide through by z component
D3DSPSM_DW = 10 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // divide through by w component
{$ENDIF}
D3DSPSM_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum
type TD3DShader_Param_SRCMod_Type = TD3DShaderParamSRCModType;
// pixel shader version token
function D3DPS_VERSION(_Major, _Minor : LongWord) : LongWord;
// vertex shader version token
function D3DVS_VERSION(_Major, _Minor : LongWord) : LongWord;
// extract major/minor from version cap
function D3DSHADER_VERSION_MAJOR(_Version : LongWord) : LongWord;
function D3DSHADER_VERSION_MINOR(_Version : LongWord) : LongWord;
// destination/source parameter register type
const
D3DSI_COMMENTSIZE_SHIFT = 16;
D3DSI_COMMENTSIZE_MASK = $7FFF0000;
function D3DSHADER_COMMENT(_DWordSize : LongWord) : LongWord;
// pixel/vertex shader end token
const
D3DPS_END = $0000FFFF;
D3DVS_END = $0000FFFF;
//---------------------------------------------------------------------
// High order surfaces
//
type TD3DBasisType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DBASIS_BEZIER = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DBASIS_BSPLINE = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DBASIS_INTERPOLATE = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DBASIS_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF};
type TD3DOrderType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DORDER_LINEAR = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
{$IFNDEF DX8}
D3DORDER_QUADRATIC = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
{$ENDIF}
D3DORDER_CUBIC = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DORDER_QUINTIC = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DORDER_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF};
type TD3DPatchEdgeStyle = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DPATCHEDGE_DISCRETE = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DPATCHEDGE_CONTINUOUS = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DPATCHEDGE_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF};
type TD3DStateBlockType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DSBT_ALL = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // capture all state
D3DSBT_PIXELSTATE = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // capture pixel state
D3DSBT_VERTEXSTATE = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // capture vertex state
D3DSBT_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF};
// The D3DVERTEXBLENDFLAGS type is used with D3DRS_VERTEXBLEND state.
//
type TD3DVertexBlendFlags = {$IFNDEF NOENUMS}({$ELS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -