Ao criar um kernel de sombreador Pixel Bender, o autor pode especificar metadados sobre o sombreador no código fonte Pixel Bender. Ao usar um sombreador no ActionScript, você pode examiná-lo e extrair seus metadados.
Ao criar uma ocorrência de Shader e vinculá-la a um sombreador Pixel Bender, um objeto ShaderData que contém dados sobre o sombreador é criado e armazenado na propriedade
data
do objeto Shader. A classe ShaderData não define nenhuma propriedade própria. No entanto, em tempo de execução uma propriedade é adicionada dinamicamente ao objeto ShaderData para cada valor de metadados definido no código fonte do sombreador. O nome fornecido a cada propriedade é igual ao nome especificado nos metadados. Por exemplo, suponha que o código fonte de um sombreador Pixel Bender inclua a seguinte definição de metadados:
namespace : "Adobe::Example";
vendor : "Bob Jones";
version : 1;
description : "Creates a version of the specified image with the specified brightness.";
O objeto ShaderData criado para esse sombreador é criado com as seguintes propriedades e valores:
-
namespace
(String):
"Adobe::Example"
-
vendor
(String):
"Bob Jones"
-
version
(String):
"1"
-
description
(String):
"Cria uma versão da imagem especificada com o brilho especificado"
Como as propriedades de metadados são adicionadas dinamicamente ao objeto ShaderData, você pode usar um loop
for..in
para examinar o objeto ShaderData. Usando essa técnica é possível descobrir se o sombreador tem algum metadado e quais são os seus valores. Além das propriedades de metadados, um objeto ShaderData pode ter propriedades que representam entradas e parâmetros definidos no sombreador. Ao usar um loop
for..in
para examinar um objeto ShaderData, verifique o tipo de dados de cada propriedade para determinar se a propriedade é uma entrada (uma ocorrência de ShaderInput), um parâmetro (uma ocorrência de ShaderParameter) ou um valor de metadados (uma ocorrência de String). O exemplo a seguir mostra como usar um loop
for..in
para examinar as propriedades dinâmicas da propriedade
data
de um sombreador. Cada valor de metadados é adicionado a uma ocorrência de Vector denominada
metadata
. Observe que este exemplo pressupõe que uma ocorrência de Shader denominada
myShader
já foi criada:
var shaderData:ShaderData = myShader.data;
var metadata:Vector.<String> = new Vector.<String>();
for (var prop:String in shaderData)
{
if (!(shaderData[prop] is ShaderInput) && !(shaderData[prop] is ShaderParameter))
{
metadata[metadata.length] = shaderData[prop];
}
}
// do something with the metadata
Para obter uma versão desse exemplo que também extrai entradas e parâmetros de sombreador, consulte
Identificação de entradas e parâmetros de sombreador
. Para obter mais informações sobre propriedades de entrada e parâmetro, consulte
Especificação de valores de entrada e de parâmetro de sombreador
.