Uma das novidades do Flash Player 10 foi permitir o uso de filtros Pixel Bender. Ao instalar o Flash, também se instala o Pixel Bender Toolkit. Neste programa você cria um kernel que publicará um arquivo *.pbj, o qual será usado pelo *.swf para aplicar o filtro. A extensão do kernel é *.pbk e a linguagem utilizada é propria deste programa.
[Download id not defined]
Abaixo segue um exemplo de como aplicar um filtro a uma imagem carregada:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package { import flash.display.*; import flash.filters.*; import flash.events.*; import flash.net.*; public class PixelBender extends MovieClip { private var filterLoader:URLLoader = new URLLoader(); private var imageLoader:Loader = new Loader(); private var image:Sprite = new Sprite(); private var shader:Shader = new Shader(); private var shaderFilter:ShaderFilter = new ShaderFilter(); public function PixelBender() { filterLoader.dataFormat = URLLoaderDataFormat.BINARY; filterLoader.addEventListener(Event.COMPLETE, filterLoaderComplete); filterLoader.load(new URLRequest("pixelate.pbj")); } private function filterLoaderComplete(event:Event):void { shader = new Shader(filterLoader.data); shaderFilter = new ShaderFilter(shader) imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaderComplete) imageLoader.load(new URLRequest("imagem.png")) addChild(imageLoader) } private function imageLoaderComplete(event:Event):void { imageLoader.filters = [shaderFilter] //+ } } } |
O filtro do exemplo tem só um parametro: dimension. Ele é responsável pelo tamanho do efeito. No entando, o número de parametros pode variar de um filtro a outro. Os valores mínimo/máximo/padrão de cada parametro são definidos no kernel.
Supondo que no exemplo acima você deseja usar um componente slider para controlar o valor do parametro dimension. Então coloque o componente no palco, nomeie-o com nome de instancia slider e no lugar de //+, coloque o código:
1 2 3 4 5 | slider.addEventListener(Event.CHANGE, mudarValor) function mudarValor(e:Event) { shader.data["dimension"].value = [e.currentTarget.value] imageLoader.filters = [shaderFilter] } |
Você pode acessar o parametro do filtro usando a classe ShaderParameter. Existem diferentes tipos de parametro e cada tipo requer um determinado número de elementos, os quais são passados através de uma matriz Array indexada. O parametro dimension do exemplo é do tipo int, por isso só requer um elemento. Supondo que exista um parametro do tipo float3, você deverá usar [valor1, valor2, valor3].
Exemplo de Pixel Bender
Baixado 303 vezes
Tamanho 1016.26 KB
E se quiser ver um aplicativo no qual usei esse tipo de filtro, visite:
http://www.igoramendola.com/photoprofile
Na pasta .\Adobe\Adobe Utilities\Pixel Bender Toolkit\pixel bender files\ você encontra o kernel do filtro usado no exemplo, junto com mais alguns.
Para baixar mais filtros, clique aqui.

em 1 de maio de 2009
Igor, ótima explicação, era dissu q eu tava precisando saber quando vc disse pra eu estudar o PixelBender e o Shader, agora q fui entender como usar os filtro, etc.
vlw!
em 5 de julho de 2009
Flash nãoomeu forte, recoheço, mas com vocês explicando desse jeito simplificado fiquei até animado em voltar a estudar.
Parabéns pelo post e pelo blog!