CAST II Game Engine

   DESCRIPTION       FEATURES       SCREENSHOTS       FORUMS       DOCUMENTATION       DOWNLOADS       CONTACTS   
Units
Class Hierarchy
Classes, Interfaces and Objects
Types
Enumerations
Variables
Constants
Functions and Procedures
Identifiers

Class TAPIStateWrapper

Unit

C2Render

Declaration

type TAPIStateWrapper = class

Description

API-dependent class which wraps render state

Fields

 NameDescription
ProtectedCameraCurrent camera (same as Renderer.LastAppliedCamera)
ProtectedClipPlanesStateClip planes state
ProtectedFPerfProfilePerformance profile
PublicFPixelShadersToFix: make it protected
ProtectedFRenderTargetsRender targets
PublicFVertexShadersToFix: make it protected
ProtectedLastErrorLast renderer error. Used for pass validation.
PublicPixelShaderFlagPixel shader usage flag. Used internally.
ProtectedRendererReference to renderer
ProtectedStageMatrixSetTrue if texture matrix was set for a certain stage
PublicVertexShaderFlagVertex shader usage flag. Used internally.

Methods

Overview

Publicconstructor Create;
Publicdestructor Destroy; override;
Protectedfunction APICreateRenderTarget(Index, Width, Height: Integer; AColorFormat, ADepthFormat: Cardinal): Boolean; virtual; abstract;
Protectedprocedure APISetShaderConstant(const Constant: TShaderConstant); overload; virtual; abstract;
Protectedprocedure APISetShaderConstant(ShaderKind: TShaderKind; ShaderRegister: Integer; const Vector: TShaderRegisterType); overload; virtual; abstract;
Protectedfunction APIValidatePass(const Pass: TRenderPass; out ResultStr: string): Boolean; virtual; abstract;
Protectedprocedure ApplyClipPlanes;
Publicprocedure ApplyCustomTextureMatrices(const Pass: TRenderPass; Item: TVisible); virtual; abstract;
Publicprocedure ApplyPass(const Pass: TRenderPass); virtual; abstract;
Protectedprocedure ApplyTextureMatrices(const Pass: TRenderPass); virtual; abstract;
Protectedfunction CreatePixelShader(Item: TShaderResource): Integer; virtual;
Protectedfunction CreateRenderTarget(Index, Width, Height: Integer; AColorFormat, ADepthFormat: Cardinal): Boolean;
Protectedfunction CreateVertexShader(Item: TShaderResource; Declaration: TVertexDeclaration): Integer; virtual;
Protectedprocedure DestroyRenderTarget(Index: Integer); virtual; abstract;
Publicfunction FindRenderTarget(const ACamera: TCamera): Integer;
Protectedprocedure HandleDataChange(Data: Pointer); virtual;
Protectedprocedure HandleItemReplace(OldItem, NewItem: TItem); virtual;
Publicprocedure HandleMessage(const Msg: TMessage);
Protectedfunction IsRenderTargetEmpty(const Element: TRenderTarget): Boolean;
Publicfunction IsRenderTargetUptoDate(const ACamera: TCamera): Boolean;
Protectedfunction IsShaderEmpty(const Element: TShader): Boolean;
Protectedfunction ResolvePixelShader(Pass: TRenderPass): Boolean;
Publicfunction ResolveVertexShader(Pass: TRenderPass): Boolean;
Publicprocedure SetBlending(Enabled: Boolean; SrcBlend, DestBlend, AlphaRef, ATestFunc, Operation: Integer); virtual; abstract;
Publicprocedure SetClipPlane(Index: Cardinal; Plane: PPlane); virtual; abstract;
Publicprocedure SetCullAndFillMode(FillMode, ShadeMode, CullMode: Integer; ColorMask: Cardinal); virtual; abstract;
Publicprocedure SetEdgePoint(PointSprite, PointScale, EdgeAntialias: Boolean); virtual; abstract;
Publicprocedure SetFog(Kind: Cardinal; Color: BaseTypes.TColor; AFogStart, AFogEnd, ADensity: Single); virtual; abstract;
Publicprocedure SetLighting(Enable: Boolean; AAmbient: BaseTypes.TColor; SpecularMode: Integer; NormalizeNormals: Boolean); virtual; abstract;
Publicprocedure SetLinePattern(ALinePattern: Longword); virtual; abstract;
Publicprocedure SetMaterial(const AAmbient, ADiffuse, ASpecular, AEmissive: BaseTypes.TColor4S; APower: Single); virtual; abstract;
Publicprocedure SetPointValues(APointSize, AMinPointSize, AMaxPointSize, APointScaleA, APointScaleB, APointScaleC: Single); virtual; abstract;
Protectedfunction SetRenderTarget(const ACamera: TCamera; TextureTarget: Boolean): Boolean; virtual; abstract;
Publicprocedure SetShaderConstant(ShaderKind: TShaderKind; ShaderRegister: Integer; const Vector: TShaderRegisterType); overload;
Publicprocedure SetShaderConstant(const Constant: TShaderConstant); overload;
Publicprocedure SetStencilState(SFailOp, ZFailOp, PassOp, STestFunc: Integer); virtual; abstract;
Publicprocedure SetStencilValues(SRef, SMask, SWriteMask: Integer); virtual; abstract;
Publicprocedure SetTextureFactor(ATextureFactor: BaseTypes.TColor); virtual; abstract;
Publicprocedure SetTextureWrap(const CoordSet: TTWrapCoordSet); virtual; abstract;
Publicprocedure SetZBuffer(ZTestFunc, ZBias: Integer; ZWrite: Boolean); virtual; abstract;
Publicfunction ValidatePass(const Pass: TRenderPass): Boolean;

Description

Publicconstructor Create;

 

Publicdestructor Destroy; override;

 

Protectedfunction APICreateRenderTarget(Index, Width, Height: Integer; AColorFormat, ADepthFormat: Cardinal): Boolean; virtual; abstract;

Calls an API to create a render target with given parameters. DepthStencil surface will be created if ADepthFormat is other than pfUndefined. Returns True if success.

Protectedprocedure APISetShaderConstant(const Constant: TShaderConstant); overload; virtual; abstract;

Calls an API to set a shader constant

Protectedprocedure APISetShaderConstant(ShaderKind: TShaderKind; ShaderRegister: Integer; const Vector: TShaderRegisterType); overload; virtual; abstract;

Calls an API to set a shader constant. ShaderKind - kind of shader, ShaderRegister - index of 4-component vector register to set, Vector - new value of the register.

Protectedfunction APIValidatePass(const Pass: TRenderPass; out ResultStr: string): Boolean; virtual; abstract;

Calls an API to validate the specified pass. Returns True if the pass is can be handled by current hardware. Otherwise returns False and fills ResultStr a text representation of the error occured.

Protectedprocedure ApplyClipPlanes;

Applies current clipping planes

Publicprocedure ApplyCustomTextureMatrices(const Pass: TRenderPass; Item: TVisible); virtual; abstract;

Applies item-specific custom texture matrix of each texture stage of the specified render pass

Publicprocedure ApplyPass(const Pass: TRenderPass); virtual; abstract;

Applies the specified render pass

Protectedprocedure ApplyTextureMatrices(const Pass: TRenderPass); virtual; abstract;

Applies texture matrix of each texture stage of the specified render pass

Protectedfunction CreatePixelShader(Item: TShaderResource): Integer; virtual;

Creates a pixel shader from the resource

Protectedfunction CreateRenderTarget(Index, Width, Height: Integer; AColorFormat, ADepthFormat: Cardinal): Boolean;

Ensures that all parameters are correct and supported and calls APICreateRenderTarget. Returns True if a render target been created.

Protectedfunction CreateVertexShader(Item: TShaderResource; Declaration: TVertexDeclaration): Integer; virtual;

Creates a vertex shader from the resource with the given vertex declaration

Protectedprocedure DestroyRenderTarget(Index: Integer); virtual; abstract;

Destroys the specified by index render target

Publicfunction FindRenderTarget(const ACamera: TCamera): Integer;

Return a render target for the given camera. If render target does not exists the function creates it.

Protectedprocedure HandleDataChange(Data: Pointer); virtual;

Handle data change of renderer-related items

Protectedprocedure HandleItemReplace(OldItem, NewItem: TItem); virtual;

Handle removal or replace of some item from scene

Publicprocedure HandleMessage(const Msg: TMessage);

Handles some related messages

Protectedfunction IsRenderTargetEmpty(const Element: TRenderTarget): Boolean;

Returns True if the specified render target is not initialized

Publicfunction IsRenderTargetUptoDate(const ACamera: TCamera): Boolean;

Returns True if there is no need to update render target texture associated with Camera

Protectedfunction IsShaderEmpty(const Element: TShader): Boolean;

Returns True if the specified shader is not initialized

Protectedfunction ResolvePixelShader(Pass: TRenderPass): Boolean;

Resolves a pixel shader for the given pass. Used internally.

Publicfunction ResolveVertexShader(Pass: TRenderPass): Boolean;

Resolves a vertex shader for the given pass. Used internally.

Publicprocedure SetBlending(Enabled: Boolean; SrcBlend, DestBlend, AlphaRef, ATestFunc, Operation: Integer); virtual; abstract;

Sets alpha blending mode and alpha test settings

Publicprocedure SetClipPlane(Index: Cardinal; Plane: PPlane); virtual; abstract;

Applies a clipping plane

Publicprocedure SetCullAndFillMode(FillMode, ShadeMode, CullMode: Integer; ColorMask: Cardinal); virtual; abstract;

Sets culling, shading and filling modes as well as color write mask

Publicprocedure SetEdgePoint(PointSprite, PointScale, EdgeAntialias: Boolean); virtual; abstract;

Sets edge and points settings

Publicprocedure SetFog(Kind: Cardinal; Color: BaseTypes.TColor; AFogStart, AFogEnd, ADensity: Single); virtual; abstract;

Sets fog kind, color, start/end and density

Publicprocedure SetLighting(Enable: Boolean; AAmbient: BaseTypes.TColor; SpecularMode: Integer; NormalizeNormals: Boolean); virtual; abstract;

Set lighting settings

Publicprocedure SetLinePattern(ALinePattern: Longword); virtual; abstract;

Sets line pattern

Publicprocedure SetMaterial(const AAmbient, ADiffuse, ASpecular, AEmissive: BaseTypes.TColor4S; APower: Single); virtual; abstract;

Sets API-level material (ambient, diffuse, specular and emissive colors and specular power)

Publicprocedure SetPointValues(APointSize, AMinPointSize, AMaxPointSize, APointScaleA, APointScaleB, APointScaleC: Single); virtual; abstract;

Sets points size parameters

Protectedfunction SetRenderTarget(const ACamera: TCamera; TextureTarget: Boolean): Boolean; virtual; abstract;

Sets current render target to the one associated with Camera. Returns True if actual change was made.

Publicprocedure SetShaderConstant(ShaderKind: TShaderKind; ShaderRegister: Integer; const Vector: TShaderRegisterType); overload;

Sets a shader constant. ShaderKind - kind of shader, ShaderRegister - index of 4-component vector register to set, Vector - new value of the register.

Publicprocedure SetShaderConstant(const Constant: TShaderConstant); overload;

Sets a shader constant

Publicprocedure SetStencilState(SFailOp, ZFailOp, PassOp, STestFunc: Integer); virtual; abstract;

Sets stencil state

Publicprocedure SetStencilValues(SRef, SMask, SWriteMask: Integer); virtual; abstract;

Sets stencil reference value and masks

Publicprocedure SetTextureFactor(ATextureFactor: BaseTypes.TColor); virtual; abstract;

Sets texture factor color

Publicprocedure SetTextureWrap(const CoordSet: TTWrapCoordSet); virtual; abstract;

Sets texture wrapping mode

Publicprocedure SetZBuffer(ZTestFunc, ZBias: Integer; ZWrite: Boolean); virtual; abstract;

Sets Z-buffer related values

Publicfunction ValidatePass(const Pass: TRenderPass): Boolean;

Validate the specified pass. Returns True if the pass is valid

Last modified: 4 Jul, 2008
Copyright (C) 2006-2008, casteng.com