1 Shader "Hidden/SeparableBlurPlus" {
2 Properties {
3 _MainTex ("Base (RGB)", 2D) = "" {}
4 }
5
6 CGINCLUDE
7
8 #include "UnityCG.cginc"
9
10 struct v2f {
11 half4 pos : SV_POSITION;
12 half2 uv : TEXCOORD0;
13 half4 uv01 : TEXCOORD1;
14 half4 uv23 : TEXCOORD2;
15 half4 uv45 : TEXCOORD3;
16 half4 uv67 : TEXCOORD4;
17 };
18
19 half4 offsets;
20
21 sampler2D _MainTex;
22
23 v2f vert (appdata_img v) {
24 v2f o;
25 o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
26
27 o.uv.xy = v.texcoord.xy;
28
29 o.uv01 = v.texcoord.xyxy + offsets.xyxy * half4(1,1, -1,-1);
30 o.uv23 = v.texcoord.xyxy + offsets.xyxy * half4(1,1, -1,-1) * 2.0;
31 o.uv45 = v.texcoord.xyxy + offsets.xyxy * half4(1,1, -1,-1) * 3.0;
32 o.uv67 = v.texcoord.xyxy + offsets.xyxy * half4(1,1, -1,-1) * 4.5;
33 o.uv67 = v.texcoord.xyxy + offsets.xyxy * half4(1,1, -1,-1) * 6.5;
34
35 return o;
36 }
37
38 half4 frag (v2f i) : SV_Target {
39 half4 color = half4 (0,0,0,0);
40
41 color += 0.225 * tex2D (_MainTex, i.uv);
42 color += 0.150 * tex2D (_MainTex, i.uv01.xy);
43 color += 0.150 * tex2D (_MainTex, i.uv01.zw);
44 color += 0.110 * tex2D (_MainTex, i.uv23.xy);
45 color += 0.110 * tex2D (_MainTex, i.uv23.zw);
46 color += 0.075 * tex2D (_MainTex, i.uv45.xy);
47 color += 0.075 * tex2D (_MainTex, i.uv45.zw);
48 color += 0.0525 * tex2D (_MainTex, i.uv67.xy);
49 color += 0.0525 * tex2D (_MainTex, i.uv67.zw);
50
51 return color;
52 }
53
54 ENDCG
55
56 Subshader {
57 Pass {
58 ZTest Always Cull Off ZWrite Off
59
60 CGPROGRAM
61 #pragma vertex vert
62 #pragma fragment frag
63 ENDCG
64 }
65 }
66
67 Fallback off
68
69 } // shader