【Unity】ShaderGraphで画像をぼかすシェーダーを作成する

はじめに

今回は画像をぼかすシェーダーを作成していきます。

環境は Unity 2019.3.0f3

Universal Render Pipeline(テンプレートのプロジェクトです)

UnlitGraph を使用しています。

ノード作成

画像の処理はほぼCustom functionノードに任せています。

bravememo.hatenablog.com

f:id:Brave345:20200407110141j:plain

処理の内容としては、上下左右のピクセルの取得して、平均を求めています。

SAMPLE_TEXTURE2DはTexture2D,Sampler State,UVを渡して、テクスチャのUVに対応した色情報を取得します。

const int BLUR_SAMPLE_COUNT = 4;

float2 BLUR_KERNEL[BLUR_SAMPLE_COUNT] = {
                float2(-1.0, -1.0),
                float2(-1.0, 1.0),
                float2(1.0, -1.0),
                float2(1.0, 1.0),
            };

color = 0;
for (int j = 0; j < BLUR_SAMPLE_COUNT; j++) 
{
          color +=  SAMPLE_TEXTURE2D(Tex,sam, uv+ BLUR_KERNEL[j] * Scale );
}
  
color.rgb /= BLUR_SAMPLE_COUNT;
color.a = 1;
             

完成

かなり簡易的なものですがそれらしくできました。

f:id:Brave345:20200407110731g:plain