📄 direct3d9.pas
字号:
D3DDECLUSAGE_TEXCOORD = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_TANGENT = 6{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_BINORMAL = 7{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_TESSFACTOR = 8{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_POSITIONT = 9{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_COLOR = 10{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_FOG = 11{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_DEPTH = 12{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLUSAGE_SAMPLE = 13{$IFNDEF NOENUMS}){$ENDIF};
{$MINENUMSIZE 4}
const
MAXD3DDECLUSAGE = D3DDECLUSAGE_SAMPLE;
MAXD3DDECLUSAGEINDEX = 15;
MAXD3DDECLLENGTH = 64; // does not include "end" marker vertex element
{$MINENUMSIZE 1}
type
TD3DDeclMethod = {$IFNDEF NOENUMS}({$ELSE}Byte;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DDECLMETHOD_DEFAULT = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLMETHOD_PARTIALU = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLMETHOD_PARTIALV = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLMETHOD_CROSSUV = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Normal
D3DDECLMETHOD_UV = 4{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DDECLMETHOD_LOOKUP = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Lookup a displacement map
D3DDECLMETHOD_LOOKUPPRESAMPLED = 6{$IFNDEF NOENUMS}){$ENDIF}; // Lookup a pre-sampled displacement map
{$MINENUMSIZE 4}
const
MAXD3DDECLMETHOD = D3DDECLMETHOD_LOOKUPPRESAMPLED;
// Declarations for _Type fields
//
{$MINENUMSIZE 1}
type
TD3DDeclType = {$IFNDEF NOENUMS}({$ELSE}Byte;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DDECLTYPE_FLOAT1 = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 1D float expanded to (value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 0.{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 0.{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1.)
D3DDECLTYPE_FLOAT2 = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 2D float expanded to (value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 0.{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1.)
D3DDECLTYPE_FLOAT3 = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 3D float expanded to (value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1.)
D3DDECLTYPE_FLOAT4 = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 4D float
D3DDECLTYPE_D3DCOLOR = 4{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 4D packed unsigned bytes mapped to 0. to 1. range
// Input is in D3DCOLOR format (ARGB) expanded to (R{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} G{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} B{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} A)
D3DDECLTYPE_UBYTE4 = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 4D unsigned byte
D3DDECLTYPE_SHORT2 = 6{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 2D signed short expanded to (value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 0.{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1.)
D3DDECLTYPE_SHORT4 = 7{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 4D signed short
// The following types are valid only with vertex shaders >= 2.0
D3DDECLTYPE_UBYTE4N = 8{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Each of 4 bytes is normalized by dividing to 255.0
D3DDECLTYPE_SHORT2N = 9{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 2D signed short normalized (v[0]/32767.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[1]/32767.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}1)
D3DDECLTYPE_SHORT4N = 10{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 4D signed short normalized (v[0]/32767.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[1]/32767.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[2]/32767.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[3]/32767.0)
D3DDECLTYPE_USHORT2N = 11{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 2D unsigned short normalized (v[0]/65535.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[1]/65535.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}1)
D3DDECLTYPE_USHORT4N = 12{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 4D unsigned short normalized (v[0]/65535.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[1]/65535.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[2]/65535.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}v[3]/65535.0)
D3DDECLTYPE_UDEC3 = 13{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 3D unsigned 10 10 10 format expanded to (value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1)
D3DDECLTYPE_DEC3N = 14{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 3D signed 10 10 10 format normalized and expanded to (v[0]/511.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} v[1]/511.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} v[2]/511.0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1)
D3DDECLTYPE_FLOAT16_2 = 15{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Two 16-bit floating point values{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} expanded to (value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} value{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} 1)
D3DDECLTYPE_FLOAT16_4 = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Four 16-bit floating point values
D3DDECLTYPE_UNUSED = 17{$IFNDEF NOENUMS}){$ENDIF}; // When the type field in a decl is unused.
{$MINENUMSIZE 4}
const
MAXD3DDECLTYPE = D3DDECLTYPE_UNUSED;
type
PD3DVertexElement9 = ^TD3DVertexElement9;
TD3DVertexElement9 = packed record
Stream : Word; // Stream index
Offset : Word; // Offset in the stream in bytes
_Type : TD3DDeclType; // Data type
Method : TD3DDeclMethod; // Processing method
Usage : TD3DDeclUsage; // Semantics
UsageIndex : Byte; // Semantic index
end;
// This is used to initialize the last vertex element in a vertex declaration
// array
//
const
D3DDECL_END : TD3DVertexElement9 = (Stream : $FF; Offset : 0; _Type : D3DDECLTYPE_UNUSED; Method : D3DDECLMETHOD_DEFAULT; Usage : D3DDECLUSAGE_POSITION; UsageIndex : 0);
// Maximum supported number of texture coordinate sets
const
D3DDP_MAXTEXCOORD = 8;
//---------------------------------------------------------------------
//
// The internal format of Pixel Shader (PS) & Vertex Shader (VS)
// Instruction Tokens is defined in the Direct3D Device Driver Kit
//
//---------------------------------------------------------------------
//
// Instruction Token Bit Definitions
//
const
D3DSI_OPCODE_MASK = $0000FFFF;
D3DSI_INSTLENGTH_MASK = $0F000000;
D3DSI_INSTLENGTH_SHIFT = 24;
type
TD3DShaderInstructionOpcodeType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
D3DSIO_NOP = 00{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_MOV = 01{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_ADD = 02{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_SUB = 03{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_MAD = 04{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_MUL = 05{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_RCP = 06{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_RSQ = 07{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DP3 = 08{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DP4 = 09{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_MIN = 10{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_MAX = 11{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_SLT = 12{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_SGE = 13{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_EXP = 14{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_LOG = 15{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_LIT = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DST = 17{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_LRP = 18{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_FRC = 19{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_M4x4 = 20{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_M4x3 = 21{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_M3x4 = 22{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_M3x3 = 23{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_M3x2 = 24{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_CALL = 25{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_CALLNZ = 26{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_LOOP = 27{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_RET = 28{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_ENDLOOP = 29{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_LABEL = 30{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DCL = 31{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_POW = 32{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_CRS = 33{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_SGN = 34{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_ABS = 35{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_NRM = 36{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_SINCOS = 37{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_REP = 38{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_ENDREP = 39{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_IF = 40{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_IFC = 41{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_ELSE = 42{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_ENDIF = 43{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_BREAK = 44{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_BREAKC = 45{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_MOVA = 46{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DEFB = 47{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DEFI = 48{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXCOORD = 64{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXKILL = 65{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEX = 66{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXBEM = 67{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXBEML = 68{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXREG2AR = 69{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXREG2GB = 70{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x2PAD = 71{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x2TEX = 72{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x3PAD = 73{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x3TEX = 74{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_RESERVED0 = 75{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x3SPEC = 76{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x3VSPEC = 77{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_EXPP = 78{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_LOGP = 79{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_CND = 80{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DEF = 81{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXREG2RGB = 82{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXDP3TEX = 83{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x2DEPTH = 84{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXDP3 = 85{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXM3x3 = 86{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXDEPTH = 87{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_CMP = 88{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_BEM = 89{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DP2ADD = 90{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DSX = 91{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_DSY = 92{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXLDD = 93{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_SETP = 94{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_TEXLDL = 95{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_BREAKP = 96{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_PHASE = $FFFD{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_COMMENT = $FFFE{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
D3DSIO_END = $FFFF{$IFNDEF NOENUMS}){$ENDIF};
type
TD3DShader_Instruction_Opcode_Type = TD3DShaderInstructionOpcodeType;
//---------------------------------------------------------------------
// Use these constants with D3DSIO_SINCOS macro as SRC2, SRC3
//
const
D3DSINCOSCONST1 : array[0..3] of Single = (-1.5500992e-006, -2.1701389e-005, 0.0026041667, 0.00026041668);
D3DSINCOSCONST2 : array[0..3] of Single = (-0.020833334, -0.12500000, 1.0, 0.50000000);
//---------------------------------------------------------------------
// 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;
//---------------------------------------------------------------------
// Opcode specific controls
const
D3DSP_OPCODESPECIFICCONTROL_MASK = $00ff0000;
D3DSP_OPCODESPECIFICCONTROL_SHIFT = 16;
// ps_2_0 texld controls
D3DSI_TEXLD_PROJECT = ($01 shl D3DSP_OPCODESPECIFICCONTROL_SHIFT);
D3DSI_TEXLD_BIAS = ($02 shl D3DSP_OPCODESPECIFICCONTROL_SHIFT);
{$MINENUMSIZE 1}
type
TD3DShaderComparison = {$IFNDEF NOENUMS}({$ELSE}Byte;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF} // < = >
D3DSPC_RESERVED0 = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 0 0 0
D3DSPC_GT = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 0 0 1
D3DSPC_EQ = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 0 1 0
D3DSPC_GE = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 0 1 1
D3DSPC_LT = 4{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 1 0 0
D3DSPC_NE = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 1 0 1
D3DSPC_LE = 6{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 1 1 0
D3DSPC_RESERVED1 = 7{$IFNDEF NOENUMS}){$ENDIF}; // 1 1 1
{$MINENUMSIZE 4}
type
TD3DShader_Comparison = TD3DShaderComparison;
const
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -