Acesso aos metadados de sombreador

Flash Player 10 e posterior, Adobe AIR 1.5 e posterior

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 .