CAST II Game Engine |
|||||||||||||||
![]() |
DESCRIPTION | ![]() |
FEATURES | ![]() |
SCREENSHOTS | ![]() |
FORUMS | ![]() |
DOCUMENTATION | ![]() |
DOWNLOADS | ![]() |
CONTACTS | ![]() |
|
(C) 2002-2004 George "Mirage" Bakhtadze. www.casteng.com
The source code may be used under either MPL 1.1 or LGPL 2.1 license. See included license.txt file
Unit contains basic engine-specific type and constant declarations
function GetSoundElementSize(Format: Cardinal): Integer; |
function GetSoundFormatElement(Format, Element: Cardinal): Integer; |
function PackSoundFormat(SampleRate, BitsPerSample, Channels: Cardinal): Cardinal; |
function UnpackSoundFormat(Format: Cardinal): TSoundFormat; |
function GetSoundElementSize(Format: Cardinal): Integer; |
Returns size of element of a sound in bytes
function GetSoundFormatElement(Format, Element: Cardinal): Integer; |
Returns sample rate, number of bits per sample or number of channels of the specified format value
function PackSoundFormat(SampleRate, BitsPerSample, Channels: Cardinal): Cardinal; |
Packs a sound format specified by the sample rate, the number of bits per sample and the number of channels to a single value
function UnpackSoundFormat(Format: Cardinal): TSoundFormat; |
Converts a format value to TSoundFormat structure
TClearFlagsSet = set of TClearFlags; |
TCullMode = Cardinal; |
TFillMode = Cardinal; |
TLockFlags = set of TLockFlag; |
TShaderConstant = record ShaderKind: TShaderKind; ShaderRegister: Integer; Value: TShaderRegisterType; end; |
TShaderConstants = array of TShaderConstant; |
TShaderRegisterType = TVector4s; |
TSoundFormat = packed record Channels, BitsPerSample, SampleRate, BlockAlign: Cardinal; end; |
TVertexDeclaration = array of TVertexDataType; |
TWordBuffer = array[0..$FFFFFFF] of Word; |
TClearFlagsSet = set of TClearFlags; |
TCullMode = Cardinal; |
Polygon culling modes
TFillMode = Cardinal; |
Polygon filling modes
TLockFlags = set of TLockFlag; |
Determines how a resource will be locked. Proper use of these flags may improve performance.
TShaderConstant = record ShaderKind: TShaderKind; ShaderRegister: Integer; Value: TShaderRegisterType; end; |
Shader constant data structure ShaderKind - kind of shader (see TShaderKind ) ShaderRegister - index of 4-component vector register to set Value - value of the register
TShaderConstants = array of TShaderConstant; |
A list of shader constants
TShaderRegisterType = TVector4s; |
TSoundFormat = packed record Channels, BitsPerSample, SampleRate, BlockAlign: Cardinal; end; |
Sound format
TVertexDeclaration = array of TVertexDataType; |
Vertex declaration type
TWordBuffer = array[0..$FFFFFFF] of Word; |
TClearFlags | ||
ClearFrameBuffer | ||
ClearZBuffer | ||
ClearStencilBuffer | ||
TLockFlag | ||
Possible members of TLockFlags set | ||
lfDiscard | Indicates that contents of a locked resource can be discarded and allows some optimizations within an API | |
lfReadOnly | Indicates that a resource is locked for read operation | |
lfNoOverwrite | Indicates that new data will be added to the resource and no older data will be overwritten. Currently applicable to vertex and index buffers. | |
TPrimitiveType | ||
| Primitive types | ||
ptPOINTLIST | ||
ptLINELIST | ||
ptLINESTRIP | ||
ptTRIANGLELIST | ||
ptTRIANGLESTRIP | ||
ptTRIANGLEFAN | ||
ptQUADS | ||
ptQUADSTRIP | ||
ptPOLYGON | ||
TShaderKind | ||
| Shader kind | ||
skVertex | Vertex shader (vertex program) | |
skPixel | Pixel shader (fragment program) | |
TVertexDataType | ||
| Vertex data types | ||
vdtFloat1 | One float value | |
vdtFloat2 | Two float values | |
vdtFloat3 | Three float values | |
vdtFloat4 | Four float values | |
vdtColor | 32-bit color value | |
vdtByte4 | Four byte values | |
vdtInt16_2 | Two 16-bit integer values | |
vdtInt16_4 | Four 16-bit integer values | |
vdtUInt10_3 | Three unsinged 10-bit integer values | |
vdtFloat16_2 | Two 16-bit float values | |
vdtFloat16_4 | Four 16-bit float values | |
vdtNothing | No value | |
AlphaArgsEnum = 'Diffuse\&Current\&Texture\&Specular\&Temporary\&Tex factor'; |
AlphaOpsEnum = 'None\&Arg1\&Arg2\&Arg1 * Arg2\&Arg1 * Arg2 * 2\&Arg1 * Arg2 * 4\&' + 'Arg1 + Arg2\&Arg1 + Arg2 - 0.5\&(Arg1 + Arg2 - 0.5)*2\&Arg1 - Arg2\&Arg1 + Arg2(1-Arg1)\&' + 'Arg1*Diffuse.a + Arg2*(1-Diffuse.a)\&Arg1*Texture.a + Arg2*(1-Texture.a)\&Arg1*Factor.a + Arg2*(1-Factor.a)\&' + 'Arg1 + Arg2*(1-Texture.a)\&Arg1*Current.a + Arg2*(1-Current.a)\&' + 'Premodulate\&Arg1 dot Arg2\&Arg1 + Arg2*Arg3\&Arg1*Arg2 + (1-Arg1)*Arg3'; |
BlendArgumentsEnum = 'Zero\&One\&SrcColor\&InvSrcColor\&SrcAlpha\&InvSrcAlpha\&DestAlpha\&InvDestAlpha\&DestColor\&InvDestColor\&SrcAlphaSat\&BothScrAlpha\&BothInvScrAlpha'; |
BlendOpsEnum = 'Src + Dest\&Src - Dest\&Dest - Src\&Min\&Max'; |
bmBOTHINVSRCALPHA = 12; |
bmBOTHSRCALPHA = 11; |
bmDESTALPHA = 6; |
bmDESTCOLOR = 8; |
bmINVDESTALPHA = 7; |
bmINVDESTCOLOR = 9; |
bmINVSRCALPHA = 5; |
bmINVSRCCOLOR = 3; |
bmONE = 1; |
bmSRCALPHA = 4; |
bmSRCALPHASAT = 10; |
bmSRCCOLOR = 2; |
bmZERO = 0; |
boADD = 0; |
boMAX = 4; |
boMIN = 3; |
boREVSUBTRACT = 2; |
boSUBTRACT = 1; |
CameraCullModesEnum = 'None\&CW\&CCW'; |
CameraFillModesEnum = 'Points\&Wireframe\&Solid'; |
cmCAMERADEFAULT = 3; |
cmCAMERAINVERSE = 4; |
cmCCW = 2; |
cmCW = 1; |
cmNONE = 0; |
ColorArgsEnum = AlphaArgsEnum + '\&Alpha replicate'; |
ColorOpsEnum = AlphaOpsEnum + '\&Arg1.a*Arg2.rgb + Arg1.rgb\&Arg1.rgb*Arg2.rgb + Arg1.a\&' + '(1-Arg1.a)*Arg2.rgb + Arg1.rgb\&(1-Arg1.rgb)*Arg2.rgb + Arg1.a\&' + 'BumpEnvMap\&BumpEnvMapLuminance'; |
CullModesEnum = CameraCullModesEnum + '\&Camera default\&Camera inverse'; |
FillModesEnum = CameraFillModesEnum + '\&Default'; |
fkDEFAULT = 0; |
fkNONE = 1; |
fkTABLEEXP = 5; |
fkTABLEEXP2 = 6; |
fkTABLELINEAR = 4; |
fkVERTEX = 2; |
fkVERTEXRANGED = 3; |
fmDEFAULT = 3; |
fmPOINT = 0; |
fmSOLID = 2; |
fmWIRE = 1; |
FogKindsEnum = 'Default\&Off\&Vertex\&Vertex ranged\&Table linear\&Exponent\&Exponent^2'; |
fuCUBETEXTURE = 4; |
fuDEPTHSTENCIL = 2; |
fuDEPTHTEXTURE = 5; |
fuRENDERTARGET = 1; |
fuTEXTURE = 0; |
fuVOLUMETEXTURE = 3; |
OffsB = 5; |
OffsG = 6; |
OffsH = 3; |
OffsNX = 2; |
OffsNY = 1; |
OffsNZ = 0; |
OffsR = 7; |
rsCLEAN = 2; |
rsLOST = 3; |
rsNOTINITIALIZED = 5; |
rsNOTREADY = 1; |
rsOK = 0; |
rsTRYTORESTORE = 4; |
sfeBits = 2; |
sfeChannels = 1; |
sfeSampleRate = 0; |
ShadeModesEnum = 'Default\&Flat\&Gouraud\&Phong'; |
slACCURATE = 2; |
slFAST = 1; |
slNONE = 0; |
smDEFAULT = 0; |
smFLAT = 1; |
smGOURAUD = 2; |
smPHONG = 3; |
soDEC = 7; |
soDECSAT = 4; |
soINC = 6; |
soINCSAT = 3; |
soINVERT = 5; |
soKEEP = 0; |
soREPLACE = 2; |
soZERO = 1; |
SpecularEnum = 'Off\&Fast\&Accurate'; |
StencilOpsEnum = 'Keep\&Zero\&Replace\&Inc saturated\&Dec saturated\&Invert\&Inc\&Dec'; |
taALPHAREPLICATE = 6; |
taBORDER = 3; |
taCLAMP = 2; |
taCURRENT = 1; |
taDIFFUSE = 0; |
taMIRROR = 1; |
taMIRRORONCE = 4; |
taSPECULAR = 3; |
taTEMP = 4; |
taTEXTURE = 2; |
taTFactor = 5; |
taWRAP = 0; |
tcgCAMERASPACENORMAL = 1; |
tcgCAMERASPACEPOSITION = 2; |
tcgCAMERASPACEREFLECTIONVECTOR = 3; |
tcgNone = 0; |
TestFuncsEnum = 'Never\&<\&=\&<=\&>\\&>=\&Always'; |
TexAdrsEnum = 'Wrap\&Mirror\&Clamp\&Border\&Mirror once'; |
TexCoordsGenEnum = 'None\&Camera space normal\&Camera space position\&Camera space reflection'; |
TexFiltersEnum = 'None\&Nearest\&Linear\&Anisotropic'; |
tfALWAYS = 7; |
tfANISOTROPIC = 3; |
tfEQUAL = 2; |
tfGREATER = 4; |
tfGREATEREQUAL = 6; |
tfLESS = 1; |
tfLESSEQUAL = 3; |
tfLINEAR = 2; |
tfNEVER = 0; |
tfNONE = 0; |
tfNOTEQUAL = 5; |
tfPOINT = 1; |
toADD = 6; |
toARG1 = 1; |
toARG2 = 2; |
toBLENDCURRENTALPHA = 15; |
toBLENDDIFFUSEALPHA = 11; |
toBLENDFACTORALPHA = 13; |
toBLENDTEXTUREALPHA = 12; |
toBLENDTEXTUREALPHAPM = 14; |
toBUMPENV = 24; |
toBUMPENVLUM = 25; |
toDISABLE = 0; |
toDOTPRODUCT3 = 17; |
toLERP = 19; |
toMODULATE = 3; |
toMODULATE2X = 4; |
toMODULATE4X = 5; |
toMODULATEALPHA_ADDCOLOR = 20; |
toMODULATECOLOR_ADDALPHA = 21; |
toMODULATEINVALPHA_ADDCOLOR = 22; |
toMODULATEINVCOLOR_ADDALPHA = 23; |
toMULTIPLYADD = 18; |
toPREMODULATE = 16; |
toSIGNEDADD = 7; |
toSIGNEDADD2X = 8; |
toSMOOTHADD = 10; |
toSUB = 9; |
ttCOUNT1 = 1; |
ttCOUNT2 = 2; |
ttCOUNT3 = 3; |
ttCOUNT4 = 4; |
ttNONE = 0; |
ttPROJECTED = 256; |
twNONE = 0; |
twUCOORD = 1; |
twVCOORD = 2; |
twW2COORD = 8; |
twWCOORD = 4; |
VertexDataTypesEnum = 'Float1' + StringDelimiter + 'Float2' + StringDelimiter + 'Float3' + StringDelimiter + 'Float4' + StringDelimiter + 'Color' + StringDelimiter + 'Byte4' + StringDelimiter + 'Int16_2' + StringDelimiter + 'Int16_4' + StringDelimiter + 'UInt10_3' + StringDelimiter + 'Float16_2' + StringDelimiter + 'Float16_4'; |
vfDIFFUSE = 4; |
vfiDIFF = 6; |
vfiNORM = 4; |
vfiPointSize = 5; |
vfiSPEC = 7; |
vfiTex : array[0..7] of Integer = (vfiTEX0, vfiTEX1, vfiTEX2, vfiTEX3, vfiTEX4, vfiTEX5, vfiTEX6, vfiTEX7); |
vfiTEX0 = 8; |
vfiTEX1 = 9; |
vfiTEX2 = 10; |
vfiTEX3 = 11; |
vfiTEX4 = 12; |
vfiTEX5 = 13; |
vfiTEX6 = 14; |
vfiTEX7 = 15; |
vfiWEIGHT1 = 1; |
vfiWEIGHT2 = 2; |
vfiWEIGHT3 = 3; |
vfiXYZ = 0; |
vfNORMALS = 2; |
vfPOINTSIZE = 16; |
vfSPECULAR = 8; |
vfTRANSFORMED = 1; |
zbtNONE = 0; |
zbtW = 2; |
zbtZ = 1; |
AlphaArgsEnum = 'Diffuse\&Current\&Texture\&Specular\&Temporary\&Tex factor'; |
BlendArgumentsEnum = 'Zero\&One\&SrcColor\&InvSrcColor\&SrcAlpha\&InvSrcAlpha\&DestAlpha\&InvDestAlpha\&DestColor\&InvDestColor\&SrcAlphaSat\&BothScrAlpha\&BothInvScrAlpha'; |
BlendOpsEnum = 'Src + Dest\&Src - Dest\&Dest - Src\&Min\&Max'; |
bmBOTHINVSRCALPHA = 12; |
bmBOTHSRCALPHA = 11; |
bmDESTALPHA = 6; |
bmDESTCOLOR = 8; |
bmINVDESTALPHA = 7; |
bmINVDESTCOLOR = 9; |
bmINVSRCALPHA = 5; |
bmINVSRCCOLOR = 3; |
bmONE = 1; |
bmSRCALPHA = 4; |
bmSRCALPHASAT = 10; |
bmSRCCOLOR = 2; |
bmZERO = 0; |
/ Blending modes
boADD = 0; |
/ Blending operations
boMAX = 4; |
boMIN = 3; |
boREVSUBTRACT = 2; |
boSUBTRACT = 1; |
CameraCullModesEnum = 'None\&CW\&CCW'; |
CameraFillModesEnum = 'Points\&Wireframe\&Solid'; |
fmNONE = $FFFFFFFF;
cmCAMERADEFAULT = 3; |
cmCAMERAINVERSE = 4; |
cmCCW = 2; |
cmCW = 1; |
cmNONE = 0; |
/ Culling modes
ColorArgsEnum = AlphaArgsEnum + '\&Alpha replicate'; |
ColorOpsEnum = AlphaOpsEnum + '\&Arg1.a*Arg2.rgb + Arg1.rgb\&Arg1.rgb*Arg2.rgb + Arg1.a\&' + '(1-Arg1.a)*Arg2.rgb + Arg1.rgb\&(1-Arg1.rgb)*Arg2.rgb + Arg1.a\&' + 'BumpEnvMap\&BumpEnvMapLuminance'; |
CullModesEnum = CameraCullModesEnum + '\&Camera default\&Camera inverse'; |
FillModesEnum = CameraFillModesEnum + '\&Default'; |
fkDEFAULT = 0; |
/ Fog kinds
fkNONE = 1; |
fkTABLEEXP = 5; |
fkTABLEEXP2 = 6; |
fkTABLELINEAR = 4; |
fkVERTEX = 2; |
fkVERTEXRANGED = 3; |
fmDEFAULT = 3; |
fmPOINT = 0; |
/ Fill modes
fmSOLID = 2; |
fmWIRE = 1; |
FogKindsEnum = 'Default\&Off\&Vertex\&Vertex ranged\&Table linear\&Exponent\&Exponent^2'; |
fuCUBETEXTURE = 4; |
fuDEPTHSTENCIL = 2; |
fuDEPTHTEXTURE = 5; |
fuRENDERTARGET = 1; |
fuTEXTURE = 0; |
/ Format usages
fuVOLUMETEXTURE = 3; |
OffsB = 5; |
OffsG = 6; |
OffsH = 3; |
/ Offsets in a map record
OffsNX = 2; |
OffsNY = 1; |
OffsNZ = 0; |
OffsR = 7; |
rsCLEAN = 2; |
Renderer is in clean state
rsLOST = 3; |
Renderer device is lost (DirectX only)
rsNOTINITIALIZED = 5; |
Renderer not yet (or failed) initialized
rsNOTREADY = 1; |
Renderer is not ready
rsOK = 0; |
Renderer is ready
rsTRYTORESTORE = 4; |
Renderer device is lost and attempting to be restored (DirectX only)
sfeBits = 2; |
sfeChannels = 1; |
sfeSampleRate = 0; |
/ Sound format elements
ShadeModesEnum = 'Default\&Flat\&Gouraud\&Phong'; |
slACCURATE = 2; |
slFAST = 1; |
slNONE = 0; |
/ Specular lighting
smDEFAULT = 0; |
/ Shade modes
smFLAT = 1; |
smGOURAUD = 2; |
smPHONG = 3; |
soDEC = 7; |
soDECSAT = 4; |
soINC = 6; |
soINCSAT = 3; |
soINVERT = 5; |
soKEEP = 0; |
/ Stencil buffer operations
soREPLACE = 2; |
soZERO = 1; |
SpecularEnum = 'Off\&Fast\&Accurate'; |
StencilOpsEnum = 'Keep\&Zero\&Replace\&Inc saturated\&Dec saturated\&Invert\&Inc\&Dec'; |
taALPHAREPLICATE = 6; |
replicate alpha to color components (read modifier)
taBORDER = 3; |
taCLAMP = 2; |
taCURRENT = 1; |
select stage destination register (read/write)
taDIFFUSE = 0; |
select diffuse color (read only)
taMIRROR = 1; |
taMIRRORONCE = 4; |
taSPECULAR = 3; |
select specular color (read only)
taTEMP = 4; |
select temporary register color (read/write)
taTEXTURE = 2; |
select texture color (read only)
taTFactor = 5; |
select texture factor (read only)
taWRAP = 0; |
/ Texture addressing modes
tcgCAMERASPACENORMAL = 1; |
tcgCAMERASPACEPOSITION = 2; |
tcgCAMERASPACEREFLECTIONVECTOR = 3; |
tcgNone = 0; |
/ Texture coords generation
TestFuncsEnum = 'Never\&<\&=\&<=\&>\\&>=\&Always'; |
TexAdrsEnum = 'Wrap\&Mirror\&Clamp\&Border\&Mirror once'; |
TexCoordsGenEnum = 'None\&Camera space normal\&Camera space position\&Camera space reflection'; |
TexFiltersEnum = 'None\&Nearest\&Linear\&Anisotropic'; |
tfALWAYS = 7; |
tfANISOTROPIC = 3; |
tfEQUAL = 2; |
tfGREATER = 4; |
tfGREATEREQUAL = 6; |
tfLESS = 1; |
tfLESSEQUAL = 3; |
tfLINEAR = 2; |
tfNEVER = 0; |
/ Test functions
tfNONE = 0; |
/ Texture filters
tfNOTEQUAL = 5; |
tfPOINT = 1; |
toADD = 6; |
toARG1 = 1; |
toARG2 = 2; |
toBLENDCURRENTALPHA = 15; |
toBLENDDIFFUSEALPHA = 11; |
toBLENDFACTORALPHA = 13; |
toBLENDTEXTUREALPHA = 12; |
toBLENDTEXTUREALPHAPM = 14; |
toBUMPENV = 24; |
toBUMPENVLUM = 25; |
toDISABLE = 0; |
/ Texture operations
toDOTPRODUCT3 = 17; |
toLERP = 19; |
toMODULATE = 3; |
toMODULATE2X = 4; |
toMODULATE4X = 5; |
toMODULATEALPHA_ADDCOLOR = 20; |
toMODULATECOLOR_ADDALPHA = 21; |
toMODULATEINVALPHA_ADDCOLOR = 22; |
toMODULATEINVCOLOR_ADDALPHA = 23; |
toMULTIPLYADD = 18; |
toPREMODULATE = 16; |
toSIGNEDADD = 7; |
toSIGNEDADD2X = 8; |
toSMOOTHADD = 10; |
toSUB = 9; |
ttCOUNT1 = 1; |
ttCOUNT2 = 2; |
ttCOUNT3 = 3; |
ttCOUNT4 = 4; |
ttNONE = 0; |
/ Texture transformations
ttPROJECTED = 256; |
twNONE = 0; |
/ TextureWrapping
twUCOORD = 1; |
twVCOORD = 2; |
twW2COORD = 8; |
twWCOORD = 4; |
/ Vertex data types enumeration
vfDIFFUSE = 4; |
vfiDIFF = 6; |
vfiNORM = 4; |
vfiPointSize = 5; |
vfiSPEC = 7; |
vfiTex : array[0..7] of Integer = (vfiTEX0, vfiTEX1, vfiTEX2, vfiTEX3, vfiTEX4, vfiTEX5, vfiTEX6, vfiTEX7); |
vfiTEX0 = 8; |
vfiTEX1 = 9; |
vfiTEX2 = 10; |
vfiTEX3 = 11; |
vfiTEX4 = 12; |
vfiTEX5 = 13; |
vfiTEX6 = 14; |
vfiTEX7 = 15; |
vfiWEIGHT1 = 1; |
vfiWEIGHT2 = 2; |
vfiWEIGHT3 = 3; |
vfiXYZ = 0; |
/ Vertex elements
vfNORMALS = 2; |
vfPOINTSIZE = 16; |
vfSPECULAR = 8; |
vfTRANSFORMED = 1; |
The vertices are already transformed (TLVertex)
zbtNONE = 0; |
/ Z-buffer types & consts
zbtW = 2; |
zbtZ = 1; |
BlendModes: array[bmZERO..bmBOTHINVSRCALPHA] of Longword; |
BlendOps: array[0..4] of Longword; |
CPTypes: array[TPrimitiveType] of Longword; |
CullModes: array[cmNone..cmCCW] of Longword; |
CVFormatsLow: array[0..31] of Longword; |
FillModes: array[fmPOINT..fmSOLID] of Longword; |
PFormats: array[0..TotalPixelFormats-1] of Longword; |
ShadeModes: array[smDefault..smPhong] of Longword; |
StencilOps: array[soKEEP..soDEC] of Longword; |
TestFuncs: array[0..7] of Longword; |
TexAddressing: array[0..4] of Longword; |
TexArgument: array[0..6] of Longword; |
TexCoordSources: array[0..3] of Longword; |
TexFilters: array[tfNone..tfAnisotropic] of Longword; |
TexOperation: array[0..25] of Longword; |
TexTransformFlags: array[ttNONE..ttCOUNT4] of Longword; |
BlendModes: array[bmZERO..bmBOTHINVSRCALPHA] of Longword; |
BlendOps: array[0..4] of Longword; |
CPTypes: array[TPrimitiveType] of Longword; |
Texture stage arguments
CullModes: array[cmNone..cmCCW] of Longword; |
CVFormatsLow: array[0..31] of Longword; |
Primitive types
FillModes: array[fmPOINT..fmSOLID] of Longword; |
PFormats: array[0..TotalPixelFormats-1] of Longword; |
Array to convert engine-specific pixel formats to API-specific pixel formats
ShadeModes: array[smDefault..smPhong] of Longword; |
StencilOps: array[soKEEP..soDEC] of Longword; |
TestFuncs: array[0..7] of Longword; |
Low bytes of vertex format
TexAddressing: array[0..4] of Longword; |
Texture stage operations
TexArgument: array[0..6] of Longword; |
Texture adressing modes
TexCoordSources: array[0..3] of Longword; |
TexFilters: array[tfNone..tfAnisotropic] of Longword; |
Cull modes
TexOperation: array[0..25] of Longword; |
Texture filtering types
TexTransformFlags: array[ttNONE..ttCOUNT4] of Longword; |
|
Last modified: 4 Jul, 2008 |