Flash Player 10 i nowsze wersje, Adobe AIR 1.5 i nowsze wersje
Pierwszym etapem użycia modułu cieniującego Pixel Bender w programie ActionScript jest uzyskanie dostępu do modułu z poziomu kodu ActionScript. Ponieważ moduły cieniujące są tworzone za pomocą pakietu Adobe Pixel Bender Toolkit i napisane w języku Pixel Bender, nie są bezpośrednio dostępne z kodu ActionScript. Można natomiast utworzyć instancję klasy Shader reprezentującą moduł cieniujący Pixel Bender w programie ActionScript. Obiekt Shader umożliwia uzyskiwanie takich informacji o module cieniującym, jak zestaw oczekiwanych parametrów lub wejściowych danych obrazu. Aby użyć modułu cieniującego, obiekt Shader przekazuje się do innych obiektów. Aby na przykład użyć modułu cieniującego jako filtra, należy przypisać obiekt Shader do właściwości
shader
obiektu ShaderFilter. Alternatywnym rozwiązaniem jest użycie modułu cieniującego jako wypełnienia. W tym celu należy przekazać obiekt Shader jako argument do metody
Graphics.beginShaderFill()
.
Kod ActionScript może uzyskiwać dostęp do modułu cieniującego utworzonego w pakiecie Adobe Pixel Bender Toolkit (do pliku PBJ) na dwa sposoby:
-
Ładowanie w czasie wykonywania: plik modułu cieniującego można załadować jako zasób zewnętrzny za pomocą obiektu URLLoader. Ta technika przypomina ładowanie zasobu zewnętrznego, takiego jak plik tekstowy. Poniższy przykład przedstawia ładowanie pliku kodu bajtowego modułu cieniującego w trakcie wykonywania oraz połączenie pliku z instancją modułu cieniującego:
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(new URLRequest("myShader.pbj"));
var shader:Shader;
function onLoadComplete(event:Event):void {
// Create a new shader and set the loaded data as its bytecode
shader = new Shader();
shader.byteCode = loader.data;
// You can also pass the bytecode to the Shader() constructor like this:
// shader = new Shader(loader.data);
// do something with the shader
}
-
Osadzenie w pliku SWF: Plik modułu cieniującego można osadzić w pliku SWF w czasie kompilacji, korzystając ze znacznika metadanych
[Embed]
. Znacznik metadanych
[Embed]
jest dostępny tylko wówczas, jeśli do kompilowania pliku SWF używany jest zestaw SDK środowiska Flex. Parametr
source
znacznika
[Embed]
wskazuje plik modułu cieniującego, a jego parametr
mimeType
ma wartość
"application/octet-stream"
, tak jak w poniższym przykładzie.
[Embed(source="myShader.pbj", mimeType="application/octet-stream")]
var MyShaderClass:Class;
// ...
// create a shader and set the embedded shader as its bytecode
var shader:Shader = new Shader();
shader.byteCode = new MyShaderClass();
// You can also pass the bytecode to the Shader() constructor like this:
// var shader:Shader = new Shader(new MyShaderClass());
// do something with the shader
W każdym przypadku należy połączyć nieprzetworzony kod bajtowy modułu cieniującego (właściwość
URLLoader.data
lub wystąpienie klasy danych
[Embed]
) z wystąpieniem klasy Shader. Jak widać w powyższym przykładzie, dostępne są dwie metody przypisania kodu bajtowego do wystąpienia klasy Shader. Kod bajtowy modułu cieniującego można wprowadzić jako argument do konstruktora
Shader()
. Można także ustawić go jako właściwość
byteCode
wystąpienia klasy Shader.
Po utworzeniu modułu cieniującego Pixel Bender i powiązaniu go z obiektem Shader można na różne sposoby używać modułu cieniującego w celu tworzenia efektów. Moduł cieniujący może być stosowany jako filtr, tryb mieszania, wypełnienie bitmapą lub do autonomicznego przetwarzania bitmapy bądź innych danych. Korzystając z właściwości
data
obiektu Shader, można uzyskiwać dostęp do metadanych modułu cieniującego, określać obrazy wejściowe i ustawiać wartości parametrów.
|
|
|