Mas o que é o Pixel Shader?
O pixel shader é um conjunto de intrusões normalmente executadas na GPU(graphic processing unity) componente das placas gráficas e que permite realizar complexos efeitos nos pixels(pequena unidade da imagem) no Silverlight esta tecnologia é suportada por via de algoritmo de software .
Esta tecnologia permite então trabalhar os diversos atributos dos pixéis melhorando as imagens e criando os mais diversos efeitos e porque são executados na GPU da placa gráfica é libertado o processador para outras tarefas , infelizmente no Silverlight este efeitos são realizados por um algoritmo logo não são tão rápidos que executados na GPU.
Passando esta parte mais introdutória vamos ao realmente interessa que é utilizar este efeitos no Silverlight estes efeitos são criados usando High Level Shader Language (HLSL) que faz parte do SDK do DirectX mas escolhi começar por mostrar como utilizar este efeitos já criados porque certamente é a que vai utilizar mais vezes.
O Silverlight 3 traz implementados 2 efeitos o blur e o shadow se quiser ver um exemplo do shadow pode visitar o exemplo aqui que eu já anteriormente tinha criado.Visto que o Silverlight não fornece uma grande quantidade de efeitos e vamos aproveitar o projecto wpffx que fornece uma biblioteca com uma grande quantidade de efeitos, se quiserem visualizar os efeitos que este projecto fornece que podem verificar o seguinte vídeo:
PixelateEffect effect =new PixelateEffect(); effect.VerticalPixelCounts = 50; effect.HorizontalPixelCounts =50; MyImage.Effect =effect;
Código fonte da aplicação para download aqui.
Agora vamos a parte mais dolorosa que é criar de raiz os nossos efeitos .
Para fazermos isto teremos de fazer o download do DirectX SDK pois vamos necessitar do compilador de efeitos (fxc.exe) . Instalado já podemos criar o nossos efeitos usando o Microsoft High-Level Shading Language (HLSL) a linguagem utilizada para manipular imagens.
Relativamente a criação do efeito vou deixar ao vosso gosto o efeito que escolhi para este tutorial foi o Nightvision.fx (adaptação de código http://developer.valvesoftware.com/wiki/Vision_Nocturna) ,para criarmos o nosso ficheiro .ps existem varias possibilidade a primeira é gerar o ficheiro na linha de comando executando o fxc /T ps_2_0 /Fo Nightvision.ps Nightvision.fx a que aconselho é utilizar a aplicação http://shazzam-tool.com/publish.htm que permite compilar e visualizar vários exemplo da aplicação do efeito alem disso ainda gera código c# para utilizarmos no seguimento.
public class Nightvision : ShaderEffect { public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(Nightvision), 0); public static readonly DependencyProperty BrightnessProperty = DependencyProperty.Register("Brightness", typeof(double), typeof(Nightvision), new PropertyMetadata(((double)(0)), PixelShaderConstantCallback(0))); public Nightvision() { PixelShader pixelShader = new PixelShader(); pixelShader.UriSource = new Uri(@"/SL3CustomPSeffect;component/Nightvision.ps", UriKind.Relative); this.PixelShader = pixelShader; this.UpdateShaderValue(InputProperty); this.UpdateShaderValue(BrightnessProperty); } public Brush Input { get { return (Brush)GetValue(InputProperty); } set { SetValue(InputProperty, value); } } public double Brightness { get { return (double)GetValue(BrightnessProperty); } set { SetValue(BrightnessProperty, value); } } }O resto já sabe é só utilizar.
Código fonte da aplicação para download aqui.
Se mesmo depois deste tutorial ainda tiver duvidas não deixe de assistir o vídeo tutorial oficial do Silverlight acerca do Pixel Shader aqui.
Referencias e recursos a consultar (EN):
Sem comentários:
Enviar um comentário