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

📄 direct3d9.pas

📁 冒险岛吸怪源码UCE的制作材料 用于冒险岛游戏的外挂
💻 PAS
📖 第 1 页 / 共 5 页
字号:
// Comparison is part of instruction opcode token:
  D3DSHADER_COMPARISON_SHIFT = D3DSP_OPCODESPECIFICCONTROL_SHIFT;
  D3DSHADER_COMPARISON_MASK  = ($7 shl D3DSHADER_COMPARISON_SHIFT);

//---------------------------------------------------------------------
// Predication flags on instruction token
  D3DSHADER_INSTRUCTION_PREDICATED = ($1 shl 28);

//---------------------------------------------------------------------
// DCL Info Token Controls

const
// For dcl info tokens requiring a semantic (usage + index)
  D3DSP_DCL_USAGE_SHIFT = 0;
  D3DSP_DCL_USAGE_MASK  = $0000000F;

  D3DSP_DCL_USAGEINDEX_SHIFT = 16;
  D3DSP_DCL_USAGEINDEX_MASK  = $000F0000;

const
// DCL pixel shader sampler info token.
  D3DSP_TEXTURETYPE_SHIFT = 27;
  D3DSP_TEXTURETYPE_MASK  = $78000000;

type
  TD3DSamplerTextureType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
    D3DSTT_UNKNOWN     = 0 shl D3DSP_TEXTURETYPE_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // uninitialized value
    D3DSTT_2D          = 2 shl D3DSP_TEXTURETYPE_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // dcl_2d s# (for declaring a 2-D texture)
    D3DSTT_CUBE        = 3 shl D3DSP_TEXTURETYPE_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // dcl_cube s# (for declaring a cube texture)
    D3DSTT_VOLUME      = 4 shl D3DSP_TEXTURETYPE_SHIFT{$IFNDEF NOENUMS}){$ENDIF};        // dcl_volume s# (for declaring a volume texture)

type
  TD3DSampler_Texture_Type = TD3DSamplerTextureType;

//
// Parameter Token Bit Definitions
//
const
  D3DSP_REGNUM_MASK       = $000007FF;

// 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;

// Bit masks for destination parameter modifiers
  D3DSPDM_NONE             = (0 shl D3DSP_DSTMOD_SHIFT); // nop
  D3DSPDM_SATURATE         = (1 shl D3DSP_DSTMOD_SHIFT); // clamp to 0. to 1. range
  D3DSPDM_PARTIALPRECISION = (2 shl D3DSP_DSTMOD_SHIFT); // Partial precision hint
  D3DSPDM_MSAMPCENTROID    = (4 shl 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.

// destination parameter
  D3DSP_DSTSHIFT_SHIFT    = 24;
  D3DSP_DSTSHIFT_MASK     = $0F000000;

// destination/source parameter register type
  D3DSP_REGTYPE_SHIFT     = 28;
  D3DSP_REGTYPE_SHIFT2    = 8;
  D3DSP_REGTYPE_MASK      = $70000000;
  D3DSP_REGTYPE_MASK2     = $00001800;

type
  TD3DShaderParamRegisterType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
    D3DSPR_TEMP        = 00{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Temporary Register File
    D3DSPR_INPUT       = 01{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Input Register File
    D3DSPR_CONST       = 02{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Register File
    D3DSPR_ADDR        = 03{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Address Register (VS)
    D3DSPR_TEXTURE     = 03{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Texture Register File (PS)
    D3DSPR_RASTOUT     = 04{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Rasterizer Register File
    D3DSPR_ATTROUT     = 05{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Attribute Output Register File
    D3DSPR_TEXCRDOUT   = 06{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Texture Coordinate Output Register File
    D3DSPR_OUTPUT      = 06{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Output register file for VS3.0+
    D3DSPR_CONSTINT    = 07{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Integer Vector Register File
    D3DSPR_COLOROUT    = 08{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Color Output Register File
    D3DSPR_DEPTHOUT    = 09{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Depth Output Register File
    D3DSPR_SAMPLER     = 10{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Sampler State Register File
    D3DSPR_CONST2      = 11{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Register File  2048 - 4095
    D3DSPR_CONST3      = 12{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Register File  4096 - 6143
    D3DSPR_CONST4      = 13{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Register File  6144 - 8191
    D3DSPR_CONSTBOOL   = 14{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Constant Boolean register file
    D3DSPR_LOOP        = 15{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Loop counter register file
    D3DSPR_TEMPFLOAT16 = 16{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // 16-bit float temp register file
    D3DSPR_MISCTYPE    = 17{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Miscellaneous (single) registers.
    D3DSPR_LABEL       = 18{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Label
    D3DSPR_PREDICATE   = 19{$IFNDEF NOENUMS}){$ENDIF};        // Predicate register

type
  TD3DShader_Param_Register_Type = TD3DShaderParamRegisterType;

// 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:
{$MINENUMSIZE 1}
type
  TD3DShaderMisctypeOffsets = {$IFNDEF NOENUMS}({$ELSE}Byte;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
    D3DSMO_POSITION = 0{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // Input position x,y,z,rhw (PS)
    D3DSMO_FACE     = 1{$IFNDEF NOENUMS}){$ENDIF};        // Floating point primitive area (PS)
{$MINENUMSIZE 4}
type
  TD3DShader_Misctype_Offsets = TD3DShaderMisctypeOffsets;

// 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}){$ENDIF};

type
  TD3DVS_RastOut_Offsets = TD3DVSRastOutOffsets;

// Source operand addressing modes
const
  D3DSHADER_ADDRESSMODE_SHIFT = 13;
  D3DSHADER_ADDRESSMODE_MASK  = 1 shl D3DSHADER_ADDRESSMODE_SHIFT;

type
  TD3DSHADERAddressModeType = {$IFNDEF NOENUMS}({$ELSE}LongWord;{$ENDIF}
{$IFDEF NOENUMS}const{$ENDIF}
    D3DSHADER_ADDRMODE_ABSOLUTE    = 0 shl D3DSHADER_ADDRESSMODE_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF}
    D3DSHADER_ADDRMODE_RELATIVE    = 1 shl D3DSHADER_ADDRESSMODE_SHIFT{$IFNDEF NOENUMS}){$ENDIF};       // Relative to register A0

type
  TD3DSHADER_AddressMode_Type = TD3DSHADERAddressModeType;

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

  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));

  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
    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
    D3DSPSM_ABS         = 11 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // abs()
    D3DSPSM_ABSNEG      = 12 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS},{$ELSE};{$ENDIF} // -abs()
    D3DSPSM_NOT         = 13 shl D3DSP_SRCMOD_SHIFT{$IFNDEF NOENUMS}){$ENDIF};        // for predicate register: "!p0"

type
  TD3DShader_Param_SRCMod_Type = TD3DShaderParamSRCModType;

// pixel sha

⌨️ 快捷键说明

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