Shaderobjekt: Unterschied zwischen den Versionen
Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
<code> | <code> | ||
IShader '''inherits from''' [[ISlideShowObject]] | IShader '''inherits from''' [[ISlideShowObject]] | ||
− | + | function Filename: [[IFilename]]; | |
procedure SetTechnique(TechniqueName: string); | 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; | ||
</code> | </code> | ||
Zeile 19: | Zeile 39: | ||
* Der Dateiname des Shaders. Hierbei ist eine konkreter Quelltextdatei eines [[HLSL-Shader|HLSL-Shaders]] für DirectX 9 gemeint (meist *.fx). | * Der Dateiname des Shaders. Hierbei ist eine konkreter Quelltextdatei eines [[HLSL-Shader|HLSL-Shaders]] für DirectX 9 gemeint (meist *.fx). | ||
<code> | <code> | ||
− | + | function Filename: [[IFilename]]; | |
</code> | </code> | ||
* Falls im Shaderquelltext mehr als eine Shader-Technik enthalten ist, kann sie über SetTechnique gesetzt werden | * Falls im Shaderquelltext mehr als eine Shader-Technik enthalten ist, kann sie über SetTechnique gesetzt werden | ||
<code> | <code> | ||
− | + | procedure SetTechnique(TechniqueName: string); | |
</code> | </code> | ||
* 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. | * 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. | ||
<code> | <code> | ||
− | + | procedure SetParamInt(ParamName: string; Value: Integer); | |
− | + | procedure SetParamFloat(ParamName: string; Value: Float); | |
</code> | </code> | ||
+ | * 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 | ||
+ | <code> | ||
+ | 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, []); | ||
+ | </code> | ||
[[Kategorie:Scripting-API]] | [[Kategorie:Scripting-API]] |
Aktuelle Version vom 9. September 2016, 15:18 Uhr
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, []);