Pakiet | flash.display |
Klasa | public final dynamic class ShaderData |
Dziedziczenie | ShaderData Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Te właściwości są dodawane do obiektu ShaderData podczas jego tworzenia. Nazwy właściwości są zgodne z nazwami określonymi w kodzie źródłowym modułu cieniującego. Typ danych każdej właściwości różni się w zależności od tego, który aspekt modułu cieniującego definiuje właściwość. Właściwości, które reprezentują parametry modułu cieniującego, są instancjami ShaderParameter; właściwości, które reprezentują obrazy wejściowe, są instancjami ShaderInput, a właściwości, które reprezentują metadane modułu cieniującego są instancjami klasy ActionScript odpowiadającej ich typom danych (np. instancja String dla metadanych tekstowych oraz uint dla metadanych uint).
Przykład: rozważmy moduł cieniujący zdefiniowany z jednym obrazem wejściowym (src
), dwoma parametrami (size
i radius
) oraz trzema wartościami metadanych (nameSpace
, version
i description
):
<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()); } }
Jeśli instancja modułu cieniującego zostanie utworzona poprzez wczytanie kodu bajtowego dla tego modułu cieniującego, instancja ShaderData będzie zawierała następujące właściwości w swojej właściwości data
:
Właściwość | Typ danych | Wartość |
---|---|---|
name | String | "DoNothing" |
nameSpace | String | "Adobe::Example" |
version | String | "1" |
description | String | "moduł cieniujący, który nic nie robi, ale robi to dobrze." |
src | ShaderInput | [Instancja ShaderInput] |
size | ShaderParameter | [Instancja ShaderParameter zawierająca właściwości dla metadanych parametru] |
radius | ShaderParameter | [Instancja ShaderParameter zawierająca właściwości dla metadanych parametru] |
Należy zauważyć, że każdy obraz wejściowy lub parametr wejściowy zdefiniowany w kodzie źródłowym modułu cieniującego, ale nieużywany w funkcji evaluatePixel()
modułu cieniującego, jest używany po skompilowaniu modułu cieniującego do kodu bajtów. W takim przypadku żadna odpowiadająca instancja ShaderInput ani ShaderParameter nie jest dodawana jako właściwość instancji ShaderData.
Zazwyczaj kod programisty nie tworzy instancji ShaderData. Instancja ShaderData zawierają dane, parametry oraz dane wejściowe dla modułu cieniującego jest dostępna jako właściwość data
instancji modułu cieniującego.
Powiązane elementy interfejsu API
Metoda | Zdefiniowane przez | ||
---|---|---|---|
ShaderData(byteCode:ByteArray)
Tworzy instancję ShaderData. | ShaderData | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
ShaderData | () | Konstruktor |
public function ShaderData(byteCode:ByteArray)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Tworzy instancję ShaderData. Zazwyczaj kod programisty nie wywołuje bezpośrednio konstruktora ShaderData. Dostęp do instancji ShaderData zawierającej dane, parametry oraz dane wejściowe dla instancji modułu cieniującego, jest uzyskiwany za pomocą właściwości data
.
byteCode:ByteArray — Kod bajtów modułu cieniującego.
|
Powiązane elementy interfejsu API
data
w celu wyświetlenia danych wejściowych, parametrów oraz właściwości metadanych modułu cieniującego.
W tym przykładzie założono, że w tym samym katalogu, co katalog wyjściowy aplikacji, znajduje się plik kodu bajtowego modułu cieniującego o nazwie „donothing.pbj”.
// // 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, 12:06 PM Z