⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directxgraphics.pas

📁 冒险岛吸怪源码UCE的制作材料 用于冒险岛游戏的外挂
💻 PAS
📖 第 1 页 / 共 5 页
字号:
      [31:29] = $2
      [28]    = $1
      [27:20] = $0
      [19:16] count of DWORDS to skip over (0..15)
      [15:00] = $0
    Vertex Input Memory from Tessellator Data (single DWORD token)
      [31:29] = $3
      [28]    indicates whether data is normals or u/v
      [27:24] = $0
      [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 information

End-of-array token (single DWORD token)
    [31:29] = $7
    [28:00] = $1fffffff

The 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=0
Stream Data Definition (Load): type=FLOAT3; register=3
Stream Data Definition (Load): type=FLOAT3; register=4
Stream Data Definition (Skip): count=2
Stream Data Definition (Load): type=FLOAT2; register=7

defines 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -