Il primo passo per usare uno shader di Pixel Bender in ActionScript consiste nell'accedere allo shader con codice scritto in ActionScript. Poiché lo shader viene creato con Adobe Pixel Bender Toolkit e viene scritto nel linguaggio Pixel Bender, non è possibile chiamarlo direttamente in ActionScript. È invece necessario creare un'istanza della classe Shader, che rappresenti lo shader di Pixel Bender in ActionScript. L'oggetto Shader vi consente di trovare le informazioni desiderate sullo shader, ad esempio se richiede parametri o valori per le immagini in input. Per usare lo shader, dovete passare l'oggetto Shader agli altri oggetti. Ad esempio, per usare lo shader come filtro dovete assegnare l'oggetto Shader a una proprietà
shader
dell'oggetto ShaderFilter. In alternativa, per usare lo shader come riempimento dovete impostare l'oggetto Shader come argomento del metodo
Graphics.beginShaderFill()
.
Usando il codice di ActionScript è possibile accedere a uno shader creato con Adobe Pixel Bender Toolkit (un file .pbj) in due modi:
-
Caricandolo in fase di runtime: il file shader può essere caricato come una risorsa esterna usando l'oggetto URLLoader. Questa tecnica è analoga a caricare risorse esterne come ad esempio i file di testo. Nell'esempio seguente viene mostrato il caricamento di un file di codice byte dello shader in fase di runtime e il relativo collegamento a un'istanza Shader:
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
}
-
Incorporandolo nel file SWF: il file shader può essere incorporato nel file SWF in fase di compilazione usando il tag per metadati
[Embed]
. Il tag per metadati
[Embed]
è disponibile solo se usate Flex SDK per compilare il file SWF. Il parametro
source
del tag
[Embed]
fa riferimento al file dello shader e il relativo parametro
mimeType
è
"application/octet-stream"
, come in questo esempio:
[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
In entrambi i casi, dovete collegare il codice byte dello shader d'origine (la proprietà
URLLoader.data
o un'istanza della classe di dati
[Embed]
) all'istanza Shader. Come dimostrano gli esempi precedenti, è possibile assegnare il codice byte all'istanza Shader in due modi. Potete passare il codice byte dello shader come argomento alla funzione di costruzione
Shader()
. In alternativa, potete impostarlo come proprietà
byteCode
dell'istanza Shader.
Dopo aver creato e collegato uno shader di Pixel Bender a un oggetto Shader, potete usare lo shader per creare gli effetti in vari modi. Potete usarlo come filtro, come metodo di fusione, come riempimento bitmap o per l'elaborazione autonoma di bitmap o altri dati. Potete inoltre usare la proprietà
data
dell'oggetto Shader per accedere ai metadati dello shader, per specificare le immagini di input e per impostare i valori dei parametri.