意外と無かったので作りました
Shader "Custom/Sprite - BlurBack" { Properties { [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} _BlurAmount("Blur Amount", Float) = 0.1 } SubShader { Tags { "Queue" = "Transparent" } GrabPass { "_BGTexture" } // GrabPass を使用。シンプル! Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; float2 uv : TEXCOORD0; }; sampler2D _BGTexture; float _BlurAmount; v2f vert( appdata v ) { v2f o; o.vertex = UnityObjectToClipPos( v.vertex ); o.uv = v.uv; return o; } half4 frag( v2f i ) : SV_Target { // ガウシアンぼかし float4 col = tex2D(_BGTexture, i.uv); float2 blurSize = float2(_BlurAmount / _ScreenParams.x, _BlurAmount / _ScreenParams.y); for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) col += tex2D( _BGTexture, i.uv + float2(x, y) * blurSize ); } return col / 9.0f; } ENDCG } } }
GrabPass 便利ですね。(コンソールとかでも問題なく使えるんかな……?)