IShader (Shader-Objekt)
1. Definition
Das Bildobjekt ist vom Typ IShader und leitet von ISlideShowObject ab.
IShader inherits from ISlideShowObject function Filename: IFilename; procedure SetTechnique(TechniqueName: string); procedure SetParamInt(ParamName: string; Value: Integer); procedure SetParamFloat(ParamName: string; Value: Float); procedure SetParamFloat2(ParamName: string; V1, V2: Single); procedure SetParamFloat3(ParamName: string; V1, V2, V3: Single); procedure SetParamFloat4(ParamName: string; V1, V2, V3, V4: Single); procedure SetParamRangeValue(ParamName: string; Value: IRangeValue); procedure SetParamRangeValue2(ParamName: string; V1, V2: IRangeValue); procedure SetParamRangeValue3(ParamName: string; V1, V2, V3: IRangeValue); procedure SetParamRangeValue4(ParamName: string; V1, V2, V3, V4: IRangeValue); function GetPostProcessing: Boolean; procedure SetPostProcessing(const Value: Boolean); function GetMeshColumns: Integer; procedure SetMeshColumns(const P: Integer); function GetMeshRows: Integer; procedure SetMeshRows(const P: Integer); procedure SetMesh(const Mesh: TVertexArray; const Indices: TIndexArray); procedure AddTexture(const Texture: ICanvas); procedure SetTexture(const TextureIndex: Integer; const Texture: ICanvas); function GetTexture(const TextureIndex: Integer): ICanvas; procedure DeleteTexture(const TextureIndex: Integer); procedure ClearTextures; function TextureCount: Integer;
2. Methoden
-
Objekt Erzeugung
function CreateShaderObject: IShader;
-
Der Dateiname des Shaders. Hierbei ist eine konkreter Quelltextdatei eines HLSL-Shaders für DirectX 9 gemeint (meist *.fx).
function Filename: IFilename;
-
Falls im Shaderquelltext mehr als eine Shader-Technik enthalten ist, kann sie über SetTechnique gesetzt werden
procedure SetTechnique(TechniqueName: string);
-
Ein Shader benötigt verschiedene Parameter. Welche das sind und hängt vom tatsächlich verwendeten Shader ab. Über die SetParamXXX-Funktionen können entsprechende Werte an den Shader übergeben werden.
procedure SetParamInt(ParamName: string; Value: Integer); procedure SetParamFloat(ParamName: string; Value: Float);
3. Beispiele
Pixelshader-Effekt
Verpixeln: Presets\Scripts\Pixelate.sss
Eigene Geometrie übergeben
Vollständiger Code, siehe Toolbox-Objekt "Dreieck": Presets\Scripts\GeometryTriangle.sss
var Mesh: TVertexArray; // Dreieck: // // (-0.5, 0.5)----(0, 0.5)----(0.5, 0.5) // | /\ | // | / \ | // | / \ | // | / \ | // | / (0, 0) \ | // | / \ | // | / \ | // (-0.5, -0.5)--------------(0.5, -0.5) // Mesh := [Vertex(0, 0.5), Vertex(0.5, 0.5), Vertex(-0.5, 0.5)]; Mesh.SetLength(3); Mesh[0] := Vertex(0, 0.5); Mesh[1] := Vertex(0.5, -0.5); Mesh[2] := Vertex(-0.5, -0.5); Shader.SetMesh(Mesh, []);