Share via


ピクセルシェーダー⑥ Sharpen フィルター

Soble  フィルターで使った 3x3 のカーネルを使った畳み込みフィルターは画像処理によく使われます。今回は画像をシャープにする Sharpen フィルターの例を紹介しましょう。

image   image

元の画像                                                                  Sharpen フィルター適用後

Shaepen フィルターの 3x3 カーネルは以下の通りです。

static float SharpenWeight[3][3] = {
{-1, -1, -1},
{-1, 9, -1},
{-1, -1, -1}};

現在のUVと近傍の9点でサンプリングして、その結果にこの重みを乗算し、加算します。

float4 main(float2 uv : TEXCOORD) : COLOR
{
float dx = 1.0/640.0;
float dy = 1.0/480.0;
float4 color = 0;
for (int u=0; u<3; u++)
for (int v=0; v<3; v++)
{
color += SharpenWeight[u][v]*
tex2D( implicitInputSampler,
float2(uv.x + dx*(u-1), uv.y + dy*(v-1)));
}
color.w = 1.0;
return color;
}

シェーダーコードは後ほどまとめて PsPad.CodePlex にアップロードします。