Carregamento ou incorporação de um sombreador

Flash Player 10 e posterior, Adobe AIR 1.5 e posterior

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.