Paket | flash.display |
Klasse | public final dynamic class ShaderData |
Vererbung | ShaderData Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Diese Eigenschaften werden dem ShaderData-Objekt bei der Erstellung hinzugefügt. Die Namen der Eigenschaften stimmen mit den im Shaderquellcode festgelegten Namen überein. Die Datentypen der verschiedenen Eigenschaften sind unterschiedlich, je nachdem, welchen Aspekt des Shaders die Eigenschaft darstellt. Die Eigenschaften, die Shaderparameter darstellen, sind ShaderParameter-Instanzen; die Eigenschaften, die Eingabebilder darstellen sind ShaderInput-Instanzen; die Eigenschaften, die Shadermetadaten darstellen, sind Instanzen der ActionScript-Klasse, die dem jeweiligen Datentyp entsprechen (Beispiel: eine String-Instanz für Metadaten im Textformat, eine uint-Instanz für uint-Metadaten).
Sehen Sie sich beispielsweise diesen Shader an, der durch ein Eingabebild (src
), zwei Parameter (size
und radius
) und drei Metadatenwerte (nameSpace
, version
und description
) definiert ist:
<languageVersion : 1.0;> kernel DoNothing < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "A shader that does nothing, but does it well."; > { input image4 src; output pixel4 dst; parameter float2 size < description: "The size of the image to which the kernel is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: 0.0; maxValue: 50.0; defaultValue: 25.0; >; void evaluatePixel() { float2 one = (radius / radius) ∗ (size / size); dst = sampleNearest(src, outCoord()); } }
Wenn Sie eine Shader-Instanz durch Laden des Bytecodes für diesen Shader erstellen, enthält die ShaderData-Instanz in ihren data
-Eigenschaften diese Eigenschaften:
Eigenschaft | Datentyp | Wert |
---|---|---|
name | String | „DoNothing“ |
nameSpace | String | „Adobe::Example“ |
version | String | „1“ |
description | String | „A shader that does nothing, but does it well.“ |
src | ShaderInput | [Eine ShaderInput-Instanz] |
size | ShaderParameter | [Eine ShaderParameter-Instanz mit Eigenschaften für die Parametermetadaten] |
radius | ShaderParameter | [Eine ShaderParameter-Instanz mit Eigenschaften für die Parametermetadaten] |
Beachten Sie: Eingabebilder oder Parameter, die zwar im Shaderquellcode definiert sind, aber in der evaluatePixel()
-Funktion des Shaders nicht verwendet werden, werden entfernt, wenn der Shader in Form von Bytecode kompiliert wird. In diesem Fall wird keine entsprechende ShaderInput- oder ShaderParameter-Instanz als Eigenschaft der ShaderData-Instanz hinzugefügt.
Im Allgemeinen wird eine ShaderData-Instanz nicht durch Entwicklercode erstellt. Eine ShaderData-Instanz, die Daten, Parameter und Eingaben für einen Shader enthält, ist als data
-Eigenschaft der Shader-Instanz verfügbar.
Verwandte API-Elemente
Methode | Definiert von | ||
---|---|---|---|
ShaderData(byteCode:ByteArray)
Erstellt eine ShaderData-Instanz. | ShaderData | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object |
ShaderData | () | Konstruktor |
public function ShaderData(byteCode:ByteArray)
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Erstellt eine ShaderData-Instanz. Im Allgemeinen wird der ShaderData-Konstruktor nicht direkt durch Entwicklercode aufgerufen. Der Zugriff auf eine ShaderData-Instanz, die Daten, Parameter und Eingaben für eine Shader-Instanz enthält, erfolgt über deren data
-Eigenschaft.
byteCode:ByteArray — Der Bytecode des Shaders.
|
Verwandte API-Elemente
data
-Eigenschaft auflisten, um die Shadereigenschaften für Eingabe, Parameter und Metadaten anzuzeigen.
Beachten Sie, dass im Beispiel davon ausgegangen wird, dass im selben Ordner wie dem Ausgabeordner der Anwendung eine Shaderbytecodedatei mit dem Namen „donothing.pbj“ vorhanden ist.
// // Source code for the shader: // <languageVersion : 1.0;> kernel DoNothing < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "A shader that does nothing, but does it well."; > { input image4 src; output pixel4 dst; parameter float2 size < description: "The size of the image to which the shader is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: float(0.0); maxValue: float(50.0); defaultValue: float(25.0); >; void evaluatePixel() { float2 one = (radius / radius) * (size / size); dst = sampleNearest(src, outCoord()); } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderDataExample extends Sprite { private var loader:URLLoader; public function ShaderDataExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("donothing.pbj")); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(); shader.byteCode = loader.data; for (var p:String in shader.data) { trace(p, ":", shader.data[p]); for (var d:String in shader.data[p]) { trace("\t", d, ":", shader.data[p][d]); } } } } }
Tue Jun 12 2018, 10:04 AM Z