Tadi pagi aku utak2 kode WPF untuk ngasi effect pake Pixel Shader 2.0, untuk .NET 3.5 SP1. Dari web-web yang aku baca ini akhirnya berhasil membuat class seadanya untuk membuat effect ini mudah dipakai-kan ke element WPF.
Web-web tsb diantaranya:
http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/
http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/23/brightness-and-contrast-manipulation-in-wpf-3-5-sp1.aspx
Hasilnya tentu harus dibagi-bagi dong. pertama2 biar ngiler dulu, gini nih cara pakainya, semisal kita punya elemen dengan nama mydock (Canvas). Trus mau dikasi efek air. Pertama-tama masukan file effects.cs ke project anda. Trus buat shader dengan cara:
public PS_Effect.PS_FX water_fx = PS_Effect.PS_FX.makeeffect_fx("water", @"
sampler2D input : register(s0);
float frame : register(c0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 Color;
uv.y = uv.y + (sin(uv.y*100+frame/20)*0.03);
Color = tex2D( input , uv.xy);
return Color;
}")
Nah dapet kan object water_fx, sekarang tinggal diapply ke elemen mydock dengan cara :
mydock.Effect=water_fx;
Tapi untuk bisa jalanin efek gelombangnya, objek water_fx tsb harus di animasikan property Frame-nya dengan cara:
water_fx.BeginAnimation(PS_Effect.PS_FX.FrameProperty, new DoubleAnimation(0, 50000, new TimeSpan(0, 0, 50000 / 20)));
Selamat mencoba:
Lampiran: effects.ps
effect.zip
Contoh hasil:
