Carga e incorporación de un sombreado

Flash Player 10 y posterior, Adobe AIR 1.5 y posterior

El primer paso para utilizar un sombreado de Pixel Bender en ActionScript es obtener acceso al sombreado en el código ActionScript. Debido a que los sombreados se crean a través del kit de herramientas de Adobe Pixel Bender, y se escriben en el lenguaje de Pixel Bender, no se puede acceder directamente a ellos en ActionScript. En su lugar, se crea una instancia de la clase Shader que representa el sombreado de Pixel Bender en ActionScript. El objeto Shader permite encontrar información sobre el sombreado. Así, permite determinar si el sombreado espera parámetros o valores de imagen de entrada. El objeto Shader se pasa a otros objetos para utilizar el sombreado. Por ejemplo, para utilizar el sombreado como un filtro, el objeto Shader se asigna a la propiedad shader de un objeto ShaderFilter. Como alternativa, para utilizar el sombreado como un relleno de dibujo, el objeto Shader se pasa como un argumento al método Graphics.beginShaderFill() .

El código ActionScript puede acceder a un sombreado creado por el kit de herramientas de Adobe Pixel Bender (un archivo .pbj) de dos formas diferentes:

  • Cargado en tiempo de ejecución: el archivo de sombreado se puede cargar como un activo externo a través de un objeto URLLoader. Esta técnica es similar a cargar un activo externo, como un archivo de texto. En el siguiente ejemplo se muestra la carga de un archivo de código de bytes de sombreado en tiempo de ejecución y su vinculación a una instancia 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 en el archivo SWF: el archivo de sombreado se puede incorporar en el archivo SWF en tiempo de compilación a través de la etiqueta de metadatos [Embed] . La etiqueta de metadatos [Embed] solo está disponible si utiliza el SDK de Flex para compilar el archivo SWF. El parámetro [Embed] de la etiqueta source señala al archivo de sombreado y su parámetro mimeType es "application/octet-stream" , tal y como se muestra en este ejemplo:

    [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

En cualquier caso, se vincula el código de bytes de sombreado sin procesar (la propiedad URLLoader.data o una instancia de la clase de datos [Embed] ) a la instancia de Shader. Como se muestra en el ejemplo anterior, el código de bytes se puede asignar a la instancia de Shader de dos modos diferentes. Puede transferir el código de bytes de sombreado como un argumento al constructor Shader() . También puede establecerlo como la propiedad byteCode de la instancia de Shader.

Una vez que se ha creado un sombreado de Pixel Bender y se ha vinculado a un objeto Shader, el sombreado se puede utilizar para crear efectos de formas diferentes. Se puede utilizar como filtro, modo de mezcla, relleno de mapa de bits o para la reproducción autónoma de mapas de bits u otros datos. La propiedad data del objeto Shader se puede utilizar para acceder a los metadatos del sombreado, especificar imágenes de entrada y establecer valores de parámetro.