Shaderobjekt

Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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, []);