Shaderobjekt
Aus AquaSoft Wiki
Version vom 9. September 2016, 15:18 Uhr von Steffen.binas (Diskussion | Beiträge)
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;
property DrawPersistent: Boolean;
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);
- DrawPersistent: Damit ein Bildgebendes ShaderObjekt liegen bleibt, muss DrawPersistent = True sein.
Beispiel
Pixelshader-Effekte
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, []);