📄 directxgraphics.pas.svn-base
字号:
[23:20] vertex register address (0..15) [19:16] type (dimensionality) [15:04] = $0 [03:00] vertex register address (0..15)Constant Memory from Shader (multiple DWORD token) [31:29] = $4 [28:25] count of 4*DWORD constants to load (0..15) [24:07] = $0 [06:00] constant memory address (0..95)Extension Token (single or multiple DWORD token) [31:29] = $5 [28:24] count of additional DWORDs in token (0..31) [23:00] extension-specific informationEnd-of-array token (single DWORD token) [31:29] = $7 [28:00] = $1fffffffThe stream selector token must be immediately followed by a contiguous set of stream data definition tokens. This token sequence fully defines that stream; including the set of elements within the stream; the order in which the elements appear; the type of each element; and the vertex register into which to load an element.Streams are allowed to include data which is not loaded into a vertex register; thus allowing data which is not used for this shader to exist in the vertex stream. This skipped data is defined only by a count of DWORDs to skip over; since the type information is irrelevant.The token sequence:Stream Select: stream=0Stream Data Definition (Load): type=FLOAT3; register=3Stream Data Definition (Load): type=FLOAT3; register=4Stream Data Definition (Skip): count=2Stream Data Definition (Load): type=FLOAT2; register=7defines stream zero to consist of 4 elements; 3 of which are loaded into registers and the fourth skipped over. Register 3 is loaded with the first three DWORDs in each vertex interpreted as FLOAT data. Register 4 is loaded with the 4th; 5th; and 6th DWORDs interpreted as FLOAT data. The next two DWORDs (7th and 8th) are skipped over and not loaded into any vertex input register. Register 7 is loaded with the 9th and 10th DWORDS interpreted as FLOAT data.Placing of tokens other than NOPs between the Stream Selector and Stream Data Definition tokens is disallowed.*)type TD3DVSDTokenType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}{$IFDEF NOENUMS}const{$ENDIF} D3DVSD_TOKEN_NOP = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // NOP or extension D3DVSD_TOKEN_STREAM = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // stream selector D3DVSD_TOKEN_STREAMDATA = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // stream data definition (map to vertex input memory) D3DVSD_TOKEN_TESSELLATOR = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // vertex input memory from tessellator D3DVSD_TOKEN_CONSTMEM = 4{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // constant memory from shader D3DVSD_TOKEN_EXT = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // extension D3DVSD_TOKEN_END = 7{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // end-of-array (requires all DWORD bits to be 1) D3DVSD_TOKENTYPESHIFT = 29{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_TOKENTYPEMASK = 7 shl D3DVSD_TOKENTYPESHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_STREAMNUMBERSHIFT = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_STREAMNUMBERMASK = $F shl D3DVSD_STREAMNUMBERSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_DATALOADTYPESHIFT = 28{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_DATALOADTYPEMASK = $1 shl D3DVSD_DATALOADTYPESHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_DATATYPESHIFT = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_DATATYPEMASK = $F shl D3DVSD_DATATYPESHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_SKIPCOUNTSHIFT = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_SKIPCOUNTMASK = $F shl D3DVSD_SKIPCOUNTSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_VERTEXREGSHIFT = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_VERTEXREGMASK = $1F shl D3DVSD_VERTEXREGSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_VERTEXREGINSHIFT = 20{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_VERTEXREGINMASK = $F shl D3DVSD_VERTEXREGINSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_CONSTCOUNTSHIFT = 25{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_CONSTCOUNTMASK = $F shl D3DVSD_CONSTCOUNTSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_CONSTADDRESSSHIFT = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_CONSTADDRESSMASK = $7F shl D3DVSD_CONSTADDRESSSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_CONSTRSSHIFT = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_CONSTRSMASK = $1FFF shl D3DVSD_CONSTRSSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_EXTCOUNTSHIFT = 24{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_EXTCOUNTMASK = $1F shl D3DVSD_EXTCOUNTSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_EXTINFOSHIFT = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_EXTINFOMASK = $FFFFFF shl D3DVSD_EXTINFOSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Set tessellator stream D3DVSD_STREAMTESSSHIFT = 28{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_STREAMTESSMASK = 1 shl D3DVSD_STREAMTESSSHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_STREAM_TESS = ((D3DVSD_TOKEN_STREAM shl D3DVSD_TOKENTYPESHIFT) and D3DVSD_TOKENTYPEMASK) or D3DVSD_STREAMTESSMASK{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} D3DVSD_FORCE_DWORD = $7fffffff{$IFNDEF NOENUMS}){$ENDIF}; // force 32-bit size enum function D3DVSD_MAKETOKENTYPE(tokenType : TD3DVSDTokenType) : TD3DVSDTokenType;// macros for generation of CreateVertexShader Declaration token array// Set current stream// _StreamNumber [0..(MaxStreams-1)] stream to get data from// function D3DVSD_STREAM(_StreamNumber : LongWord) : TD3DVSDTokenType;type TD3DVSD_TokenType = TD3DVSDTokenType;// bind single vertex register to vertex element from vertex stream//// _VertexRegister [0..15] address of the vertex register// _Type [D3DVSDT_*] dimensionality and arithmetic data type function D3DVSD_REG( _VertexRegister, _Type : LongWord) : TD3DVSDTokenType;// Skip _DWORDCount DWORDs in vertex// function D3DVSD_SKIP(_DWORDCount : LongWord) : TD3DVSDTokenType;// load data into vertex shader constant memory//// _ConstantAddress [0..95] - address of constant array to begin filling data// _Count [0..15] - number of constant vectors to load (4 DWORDs each)// followed by 4*_Count DWORDS of data// function D3DVSD_CONST( _ConstantAddress, _Count : LongWord) : TD3DVSDTokenType;// enable tessellator generated normals//// _VertexRegisterIn [0..15] address of vertex register whose input stream// will be used in normal computation// _VertexRegisterOut [0..15] address of vertex register to output the normal to// function D3DVSD_TESSNORMAL( _VertexRegisterIn, _VertexRegisterOut : LongWord) : TD3DVSDTokenType;// enable tessellator generated surface parameters//// _VertexRegister [0..15] address of vertex register to output parameters// function D3DVSD_TESSUV( _VertexRegister : LongWord) : TD3DVSDTokenType;// Generates END token//const D3DVSD_END = $FFFFFFFF;// Generates NOP token D3DVSD_NOP = $00000000;// bit declarations for _Type fields D3DVSDT_FLOAT1 = $00; // 1D float expanded to (value; 0.; 0.; 1.) D3DVSDT_FLOAT2 = $01; // 2D float expanded to (value; value; 0.; 1.) D3DVSDT_FLOAT3 = $02; // 3D float expanded to (value; value; value; 1.) D3DVSDT_FLOAT4 = $03; // 4D float D3DVSDT_D3DCOLOR = $04; // 4D packed unsigned bytes mapped to 0. to 1. range // Input is in D3DCOLOR format (ARGB) expanded to (R; G; B; A) D3DVSDT_UBYTE4 = $05; // 4D unsigned byte D3DVSDT_SHORT2 = $06; // 2D signed short expanded to (value; value; 0.; 1.) D3DVSDT_SHORT4 = $07; // 4D signed short// assignments of vertex input registers for fixed function vertex shader// D3DVSDE_POSITION = 0; D3DVSDE_BLENDWEIGHT = 1; D3DVSDE_BLENDINDICES = 2; D3DVSDE_NORMAL = 3; D3DVSDE_PSIZE = 4; D3DVSDE_DIFFUSE = 5; D3DVSDE_SPECULAR = 6; D3DVSDE_TEXCOORD0 = 7; D3DVSDE_TEXCOORD1 = 8; D3DVSDE_TEXCOORD2 = 9; D3DVSDE_TEXCOORD3 = 10; D3DVSDE_TEXCOORD4 = 11; D3DVSDE_TEXCOORD5 = 12; D3DVSDE_TEXCOORD6 = 13; D3DVSDE_TEXCOORD7 = 14; D3DVSDE_POSITION2 = 15; D3DVSDE_NORMAL2 = 16;// Maximum supported number of texture coordinate sets D3DDP_MAXTEXCOORD = 8;//// Instruction Token Bit Definitions// D3DSI_OPCODE_MASK = $0000FFFF;type TD3DShaderInstructionOpcodeType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}{$IFDEF NOENUMS}const{$ENDIF} D3DSIO_NOP = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_MOV = 1{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_ADD = 2{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_SUB = 3{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_MAD = 4{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_MUL = 5{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_RCP = 6{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_RSQ = 7{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_DP3 = 8{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_DP4 = 9{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS/VS D3DSIO_MIN = 10{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_MAX = 11{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_SLT = 12{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_SGE = 13{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_EXP = 14{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_LOG = 15{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_LIT = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_DST = 17{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_LRP = 18{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_FRC = 19{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_M4x4 = 20{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_M4x3 = 21{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_M3x4 = 22{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_M3x3 = 23{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_M3x2 = 24{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_TEXCOORD = 64{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXKILL = 65{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEX = 66{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXBEM = 67{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXBEML = 68{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXREG2AR = 69{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXREG2GB = 70{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x2PAD = 71{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x2TEX = 72{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x3PAD = 73{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x3TEX = 74{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x3DIFF = 75{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x3SPEC = 76{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x3VSPEC = 77{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_EXPP = 78{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_LOGP = 79{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // VS D3DSIO_CND = 80{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_DEF = 81{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS{$IFNDEF DX8} D3DSIO_TEXREG2RGB = 82{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXDP3TEX = 83{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x2DEPTH = 84{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXDP3 = 85{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXM3x3 = 86{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_TEXDEPTH = 87{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_CMP = 88{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS D3DSIO_BEM = 89{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // PS 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 enumtype 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -