Custom Pixel Shader Effect はじめました。
まずは Direct X SDK をインストール
http://www.microsoft.com/downloads/details.aspx?FamilyId=5493F76A-6D37-478D-BA17-28B1CCA4865A&displaylang=en
インストールしたフォルダの下の Utilities\bin\x86 に Path を通しておくと後々便利
次にエフェクトの Brighten.fx ファイルを作成。HLSL を書く。ここではブライトのエフェクト。
sampler2D input : register(s0); float4 main(float2 uv : TEXCOORD) : COLOR { float4 Color; Color = tex2D( input , uv.xy)*4; return Color; }
次に Brighten.fx ファイルをコンパイルして Brighten.ps ファイルを作成
fxc /T ps_2_0 /Fo Brighten.ps Brighten.fx
完了後に Brighten.ps ファイルが出来あがる。バイナリファイル。
この Brighten.ps ファイルを Silverlight に Resource で登録する。
設定した Brighten.ps を読み込んで扱うための ShaderEffect のクラスを作成。BrightenEffect.cs
public class BrightenEffect : ShaderEffect { private static PixelShader shader = new PixelShader(){ UriSource = new Uri("/SilverlightSquare.CustomEffect;component/Assets/Shader/Brighten.ps",UriKind.Relative) }; public BrightenEffect(){ this.PixelShader = shader; } }
作った BrightenEffect を使う。
<UserControl x:Class="SilverlightSquare.CustomEffect.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localEffects="clr-namespace:SilverlightSquare.CustomEffect.Effects;assembly=SilverlightSquare.CustomEffect"> <Grid x:Name="LayoutRoot"> <Image Source="Assets/Image/image1.jpg" Stretch="Uniform" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Image.Effect> <localEffects:BrightenEffect /> </Image.Effect> </Image> </Grid> </UserControl>