📄 direct3d9.pas
字号:
* Enumerations for COLOROP and ALPHAOP texture blending operations set in
* texture processing stage controls in D3DTSS.
*)
type
_D3DTEXTUREOP = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
{$EXTERNALSYM _D3DTEXTUREOP}
D3DTEXTUREOP = _D3DTEXTUREOP;
{$EXTERNALSYM D3DTEXTUREOP}
TD3DTextureOp = _D3DTEXTUREOP;
const
// Control
D3DTOP_DISABLE = 1; // disables stage
{$EXTERNALSYM D3DTOP_DISABLE}
D3DTOP_SELECTARG1 = 2; // the default
{$EXTERNALSYM D3DTOP_SELECTARG1}
D3DTOP_SELECTARG2 = 3;
{$EXTERNALSYM D3DTOP_SELECTARG2}
// Modulate
D3DTOP_MODULATE = 4; // multiply args together
{$EXTERNALSYM D3DTOP_MODULATE}
D3DTOP_MODULATE2X = 5; // multiply and 1 bit
{$EXTERNALSYM D3DTOP_MODULATE2X}
D3DTOP_MODULATE4X = 6; // multiply and 2 bits
{$EXTERNALSYM D3DTOP_MODULATE4X}
// Add
D3DTOP_ADD = 7; // add arguments together
{$EXTERNALSYM D3DTOP_ADD}
D3DTOP_ADDSIGNED = 8; // add with -0.5 bias
{$EXTERNALSYM D3DTOP_ADDSIGNED}
D3DTOP_ADDSIGNED2X = 9; // as above but left 1 bit
{$EXTERNALSYM D3DTOP_ADDSIGNED2X}
D3DTOP_SUBTRACT = 10; // Arg1 - Arg2, with no saturation
{$EXTERNALSYM D3DTOP_SUBTRACT}
D3DTOP_ADDSMOOTH = 11; // add 2 args, subtract product
// Arg1 + Arg2 - Arg1*Arg2
// = Arg1 + (1-Arg1)*Arg2
{$EXTERNALSYM D3DTOP_ADDSMOOTH}
// Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
D3DTOP_BLENDDIFFUSEALPHA = 12; // iterated alpha
{$EXTERNALSYM D3DTOP_BLENDDIFFUSEALPHA}
D3DTOP_BLENDTEXTUREALPHA = 13; // texture alpha
{$EXTERNALSYM D3DTOP_BLENDTEXTUREALPHA}
D3DTOP_BLENDFACTORALPHA = 14; // alpha from D3DRS_TEXTUREFACTOR
{$EXTERNALSYM D3DTOP_BLENDFACTORALPHA}
// Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
D3DTOP_BLENDTEXTUREALPHAPM = 15; // texture alpha
{$EXTERNALSYM D3DTOP_BLENDTEXTUREALPHAPM}
D3DTOP_BLENDCURRENTALPHA = 16; // by alpha of current color
{$EXTERNALSYM D3DTOP_BLENDCURRENTALPHA}
// Specular mapping
D3DTOP_PREMODULATE = 17; // modulate with next texture before use
{$EXTERNALSYM D3DTOP_PREMODULATE}
D3DTOP_MODULATEALPHA_ADDCOLOR = 18; // Arg1.RGB + Arg1.A*Arg2.RGB
// COLOROP only
{$EXTERNALSYM D3DTOP_MODULATEALPHA_ADDCOLOR}
D3DTOP_MODULATECOLOR_ADDALPHA = 19; // Arg1.RGB*Arg2.RGB + Arg1.A
// COLOROP only
{$EXTERNALSYM D3DTOP_MODULATECOLOR_ADDALPHA}
D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20; // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
// COLOROP only
{$EXTERNALSYM D3DTOP_MODULATEINVALPHA_ADDCOLOR}
D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21; // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
// COLOROP only
{$EXTERNALSYM D3DTOP_MODULATEINVCOLOR_ADDALPHA}
// Bump mapping
D3DTOP_BUMPENVMAP = 22; // per pixel env map perturbation
{$EXTERNALSYM D3DTOP_BUMPENVMAP}
D3DTOP_BUMPENVMAPLUMINANCE = 23; // with luminance channel
{$EXTERNALSYM D3DTOP_BUMPENVMAPLUMINANCE}
// This can do either diffuse or specular bump mapping with correct input.
// Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
// where each component has been scaled and offset to make it signed.
// The result is replicated into all four (including alpha) channels.
// This is a valid COLOROP only.
D3DTOP_DOTPRODUCT3 = 24;
{$EXTERNALSYM D3DTOP_DOTPRODUCT3}
// Triadic ops
D3DTOP_MULTIPLYADD = 25; // Arg0 + Arg1*Arg2
{$EXTERNALSYM D3DTOP_MULTIPLYADD}
D3DTOP_LERP = 26; // (Arg0)*Arg1 + (1-Arg0)*Arg2
{$EXTERNALSYM D3DTOP_LERP}
(*
* Values for COLORARG0,1,2, ALPHAARG0,1,2, and RESULTARG texture blending
* operations set in texture processing stage controls in D3DRENDERSTATE.
*)
const
D3DTA_SELECTMASK = $0000000f; // mask for arg selector
{$EXTERNALSYM D3DTA_SELECTMASK}
D3DTA_DIFFUSE = $00000000; // select diffuse color (read only)
{$EXTERNALSYM D3DTA_DIFFUSE}
D3DTA_CURRENT = $00000001; // select stage destination register (read/write)
{$EXTERNALSYM D3DTA_CURRENT}
D3DTA_TEXTURE = $00000002; // select texture color (read only)
{$EXTERNALSYM D3DTA_TEXTURE}
D3DTA_TFACTOR = $00000003; // select D3DRS_TEXTUREFACTOR (read only)
{$EXTERNALSYM D3DTA_TFACTOR}
D3DTA_SPECULAR = $00000004; // select specular color (read only)
{$EXTERNALSYM D3DTA_SPECULAR}
D3DTA_TEMP = $00000005; // select temporary register color (read/write)
{$EXTERNALSYM D3DTA_TEMP}
D3DTA_CONSTANT = $00000006; // select texture stage constant
{$EXTERNALSYM D3DTA_CONSTANT}
D3DTA_COMPLEMENT = $00000010; // take 1.0 - x (read modifier)
{$EXTERNALSYM D3DTA_COMPLEMENT}
D3DTA_ALPHAREPLICATE = $00000020; // replicate alpha to color components (read modifier)
{$EXTERNALSYM D3DTA_ALPHAREPLICATE}
type
//
// Values for D3DSAMP_***FILTER texture stage states
//
_D3DTEXTUREFILTERTYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
{$EXTERNALSYM _D3DTEXTUREFILTERTYPE}
D3DTEXTUREFILTERTYPE = _D3DTEXTUREFILTERTYPE;
{$EXTERNALSYM D3DTEXTUREFILTERTYPE}
TD3DTextureFilterType = _D3DTEXTUREFILTERTYPE;
const
D3DTEXF_NONE = 0; // filtering disabled (valid for mip filter only)
{$EXTERNALSYM D3DTEXF_NONE}
D3DTEXF_POINT = 1; // nearest
{$EXTERNALSYM D3DTEXF_POINT}
D3DTEXF_LINEAR = 2; // linear interpolation
{$EXTERNALSYM D3DTEXF_LINEAR}
D3DTEXF_ANISOTROPIC = 3; // anisotropic
{$EXTERNALSYM D3DTEXF_ANISOTROPIC}
D3DTEXF_PYRAMIDALQUAD = 6; // 4-sample tent
{$EXTERNALSYM D3DTEXF_PYRAMIDALQUAD}
D3DTEXF_GAUSSIANQUAD = 7; // 4-sample gaussian
{$EXTERNALSYM D3DTEXF_GAUSSIANQUAD}
const
{ Bits for Flags in ProcessVertices call }
D3DPV_DONOTCOPYDATA = (1 shl 0);
{$EXTERNALSYM D3DPV_DONOTCOPYDATA}
//-------------------------------------------------------------------
// Flexible vertex format bits
//
D3DFVF_RESERVED0 = $001;
{$EXTERNALSYM D3DFVF_RESERVED0}
D3DFVF_POSITION_MASK = $400E;
{$EXTERNALSYM D3DFVF_POSITION_MASK}
D3DFVF_XYZ = $002;
{$EXTERNALSYM D3DFVF_XYZ}
D3DFVF_XYZRHW = $004;
{$EXTERNALSYM D3DFVF_XYZRHW}
D3DFVF_XYZB1 = $006;
{$EXTERNALSYM D3DFVF_XYZB1}
D3DFVF_XYZB2 = $008;
{$EXTERNALSYM D3DFVF_XYZB2}
D3DFVF_XYZB3 = $00a;
{$EXTERNALSYM D3DFVF_XYZB3}
D3DFVF_XYZB4 = $00c;
{$EXTERNALSYM D3DFVF_XYZB4}
D3DFVF_XYZB5 = $00e;
{$EXTERNALSYM D3DFVF_XYZB5}
D3DFVF_XYZW = $4002;
{$EXTERNALSYM D3DFVF_XYZW}
D3DFVF_NORMAL = $010;
{$EXTERNALSYM D3DFVF_NORMAL}
D3DFVF_PSIZE = $020;
{$EXTERNALSYM D3DFVF_PSIZE}
D3DFVF_DIFFUSE = $040;
{$EXTERNALSYM D3DFVF_DIFFUSE}
D3DFVF_SPECULAR = $080;
{$EXTERNALSYM D3DFVF_SPECULAR}
D3DFVF_TEXCOUNT_MASK = $f00;
{$EXTERNALSYM D3DFVF_TEXCOUNT_MASK}
D3DFVF_TEXCOUNT_SHIFT = 8;
{$EXTERNALSYM D3DFVF_TEXCOUNT_SHIFT}
D3DFVF_TEX0 = $000;
{$EXTERNALSYM D3DFVF_TEX0}
D3DFVF_TEX1 = $100;
{$EXTERNALSYM D3DFVF_TEX1}
D3DFVF_TEX2 = $200;
{$EXTERNALSYM D3DFVF_TEX2}
D3DFVF_TEX3 = $300;
{$EXTERNALSYM D3DFVF_TEX3}
D3DFVF_TEX4 = $400;
{$EXTERNALSYM D3DFVF_TEX4}
D3DFVF_TEX5 = $500;
{$EXTERNALSYM D3DFVF_TEX5}
D3DFVF_TEX6 = $600;
{$EXTERNALSYM D3DFVF_TEX6}
D3DFVF_TEX7 = $700;
{$EXTERNALSYM D3DFVF_TEX7}
D3DFVF_TEX8 = $800;
{$EXTERNALSYM D3DFVF_TEX8}
D3DFVF_LASTBETA_UBYTE4 = $1000;
{$EXTERNALSYM D3DFVF_LASTBETA_UBYTE4}
D3DFVF_LASTBETA_D3DCOLOR = $8000;
{$EXTERNALSYM D3DFVF_LASTBETA_D3DCOLOR}
D3DFVF_RESERVED2 = $6000; // 2 reserved bits
{$EXTERNALSYM D3DFVF_RESERVED2}
//---------------------------------------------------------------------
// Vertex Shaders
//
// Vertex shader declaration
// Forces TD3DDeclUsage, TD3DDeclMethod, TD3DDeclType be 1 byte enums
{$MINENUMSIZE 1}
type
// Vertex element semantics
//
_D3DDECLUSAGE = (
D3DDECLUSAGE_POSITION, // = 0
D3DDECLUSAGE_BLENDWEIGHT, // 1
D3DDECLUSAGE_BLENDINDICES, // 2
D3DDECLUSAGE_NORMAL, // 3
D3DDECLUSAGE_PSIZE, // 4
D3DDECLUSAGE_TEXCOORD, // 5
D3DDECLUSAGE_TANGENT, // 6
D3DDECLUSAGE_BINORMAL, // 7
D3DDECLUSAGE_TESSFACTOR, // 8
D3DDECLUSAGE_POSITIONT, // 9
D3DDECLUSAGE_COLOR, // 10
D3DDECLUSAGE_FOG, // 11
D3DDECLUSAGE_DEPTH, // 12
D3DDECLUSAGE_SAMPLE // 13
);
{$EXTERNALSYM _D3DDECLUSAGE}
D3DDECLUSAGE = _D3DDECLUSAGE;
{$EXTERNALSYM D3DDECLUSAGE}
TD3DDeclUsage = _D3DDECLUSAGE;
const
MAXD3DDECLUSAGE = DWORD(D3DDECLUSAGE_SAMPLE);
{$EXTERNALSYM MAXD3DDECLUSAGE}
MAXD3DDECLUSAGEINDEX = 15;
{$EXTERNALSYM MAXD3DDECLUSAGEINDEX}
MAXD3DDECLLENGTH = 64; // does not include "end" marker vertex element
{$EXTERNALSYM MAXD3DDECLLENGTH}
type
_D3DDECLMETHOD = (
D3DDECLMETHOD_DEFAULT, // = 0,
D3DDECLMETHOD_PARTIALU,
D3DDECLMETHOD_PARTIALV,
D3DDECLMETHOD_CROSSUV, // Normal
D3DDECLMETHOD_UV,
D3DDECLMETHOD_LOOKUP, // Lookup a displacement map
D3DDECLMETHOD_LOOKUPPRESAMPLED // Lookup a pre-sampled displacement map
);
{$EXTERNALSYM _D3DDECLMETHOD}
D3DDECLMETHOD = _D3DDECLMETHOD;
{$EXTERNALSYM D3DDECLMETHOD}
TD3DDeclMethod = _D3DDECLMETHOD;
const
MAXD3DDECLMETHOD = DWORD(D3DDECLMETHOD_LOOKUPPRESAMPLED);
{$EXTERNALSYM MAXD3DDECLMETHOD}
type
// Declarations for _Type fields
//
_D3DDECLTYPE = (
{$IFNDEF COMPILER6_UP}
D3DDECLTYPE_FLOAT1 {= 0}, // 1D float expanded to (value, 0., 0., 1.)
D3DDECLTYPE_FLOAT2 {= 1}, // 2D float expanded to (value, value, 0., 1.)
D3DDECLTYPE_FLOAT3 {= 2}, // 3D float expanded to (value, value, value, 1.)
D3DDECLTYPE_FLOAT4 {= 3}, // 4D float
D3DDECLTYPE_D3DCOLOR {= 4}, // 4D packed unsigned bytes mapped to 0. to 1. range
// Input is in D3DCOLOR format (ARGB) expanded to (R, G, B, A)
D3DDECLTYPE_UBYTE4 {= 5}, // 4D unsigned byte
D3DDECLTYPE_SHORT2 {= 6}, // 2D signed short expanded to (value, value, 0., 1.)
D3DDECLTYPE_SHORT4 {= 7}, // 4D signed short
// The following types are valid only with vertex shaders >= 2.0
D3DDECLTYPE_UBYTE4N {= 8}, // Each of 4 bytes is normalized by dividing to 255.0
D3DDECLTYPE_SHORT2N {= 9}, // 2D si
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -