A primeira etapa do uso de um sombreador Pixel Bender no ActionScript é obter acesso ao sombreador no seu código ActionScript. Como um sombreador é criado usando o Adobe Pixel Bender Toolkit e gravado na linguagem Pixel Bender, ele não pode ser acessado diretamente no ActionScript. Em vez disso, crie uma ocorrência da classe Shader que represente o sombreador Pixel Bender para o ActionScript. O objeto Shader permite localizar informações sobre o sombreador, como por exemplo, se ele espera parâmetros ou valores da imagem de entrada. Você passa o objeto Shader para outros objetos para realmente usar o sombreador. Por exemplo, para usar o sombreador como um filtro, você atribui o objeto Shader à propriedade
shader
de um objeto ShaderFilter. Como alternativa, para usar o sombreador como um preenchimento de desenho, você passa o objeto Shader como um argumento para o método
Graphics.beginShaderFill()
.
Seu código ActionScript pode acessar um sombreador criado pelo Adobe Pixel Bender Toolkit (um arquivo .pbj) de duas maneiras:
-
Carregado em tempo de execução: o arquivo sombreador pode ser carregado como um ativo externo usando um objeto URLLoader. Essa técnica é semelhante ao carregamento de um ativo externo, como um arquivo de texto. O exemplo a seguir demonstra o carregamento de um arquivo de código de bytes do sombreador em tempo de execução e sua vinculação com uma ocorrência de 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
}
-
Incorporado no arquivo SWF: o arquivo sombreador pode ser incorporado no arquivo SWF em tempo de compilação usando a tag de metadados
[Embed]
. A tag de metadados
[Embed]
fica disponível somente se você usar o SDK do Flex para compilar o arquivo SWF. O parâmetro
source
da tag
[Embed]
aponta para o arquivo sombreador, e seu parâmetro
mimeType
é o
"application/octet-stream"
, como neste exemplo:
[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
Nos dois casos, você vincula o código de bytes brutos do sombreador (a propriedade
URLLoader.data
ou uma ocorrência da classe de dados
[Embed]
) com a ocorrência de Shader. Como demonstram os exemplos anteriores, você pode atribuir o código de bytes à ocorrência de Shader de duas maneiras. Você pode passar o código de bytes do sombreador como um argumento para o construtor
Shader()
. Você também pode defini-lo como a propriedade
byteCode
da ocorrência de Shader.
Depois que um sombreador Pixel Bender foi criado e vinculado com um objeto Shader, você pode usá-lo para criar efeitos de várias maneiras. Pode usá-lo como um filtro, um modo de mesclagem, um preenchimento bitmap ou para processamento autônomo de bitmap ou de outros dados. Você também pode usar a propriedade
data
do objeto Shader para acessar os metadados de sombreador, especificar imagens de entrada e definir valores de parâmetros.