共用方式為


ピクセルシェーダー⑦ ZoomBlur

image  image

単純なぼかしなら、BlurEffect を使えばよいのでシェーダーを書く必要はありません。決して BlurBitmapEffect を使ってはいけません(あまりに遅いため、WPF 4では機能しなくなりました)。

Shader Effect Library に面白いぼかし効果がありました。ある点にズームインして収束するようなぼかしをかけられる ZoomBlur です。これも一種の畳み込みなんでしょうか、ズームスケールに応じて15回サンプリングして平滑化しています。WPF側で C0 定数レジスターを変化させればズームイン アニメーションが作れます。マウスを右クリックしながら動かせば焦点の位置が変わります。

sampler2D implicitInput : register(s0);
float c0:register(c0);
float2 c5:register(c5);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 c = 0;
uv -= c5;
for(int i=0; i<15; i++)
{
float scale = 1.0 + c0 * (i / 14.0);
c += tex2D(implicitInput, uv * scale + c5);
}
c /= 15;
return c;
}

このシェーダー コードも後ほどまとめて PsPad.Codeplex にアップロードします。