ryannining

See also: Other Geeks@INDC
Pixel Shader Effect Class

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:

Share this post: | | | |
Posted: Mar 12 2009, 05:21 PM by ryannining | with 2 comment(s)
Filed under: ,