Shader "Zhanyou/Effect/RadialBlur" { Properties { [PerRendererData] _MainTex ("Texture", 2D) = "white" {} _BlurFactor("BlurFactor", Range(0, 1)) = 0.12 _BlurRatio("BlurRatio", Range(0, 1)) = 0 } SubShader { Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest #include "UnityCG.cginc" uniform sampler2D _MainTex; uniform float _BlurFactor; uniform float _BlurRatio; half4 blur(sampler2D mainTex, float2 uv, float blurFactor) { float2 delta = 0.5 - uv; float4 uv01 = uv.xyxy + blurFactor * delta.xyxy * float4(0.5, 0.5, 1.0, 1.0); float4 uv23 = uv.xyxy + blurFactor * delta.xyxy * float4(1.5, 1.5, 2.0, 2.0); float4 uv45 = uv.xyxy + blurFactor * delta.xyxy * float4(2.5, 2.5, 3.0, 3.0); float4 uv67 = uv.xyxy + blurFactor * delta.xyxy * float4(3.5, 3.5, 4.0, 4.0); half4 color = 0.0; color += 0.225 * tex2D(mainTex, uv); color += 0.150 * tex2D(mainTex, uv01.xy); color += 0.150 * tex2D(mainTex, uv01.zw); color += 0.110 * tex2D(mainTex, uv23.xy); color += 0.110 * tex2D(mainTex, uv23.zw); color += 0.075 * tex2D(mainTex, uv45.xy); color += 0.075 * tex2D(mainTex, uv45.zw); color += 0.0525 * tex2D(mainTex, uv67.xy); color += 0.0525 * tex2D(mainTex, uv67.zw); return color; } fixed4 frag (v2f_img i) : SV_Target { return blur(_MainTex, i.uv, _BlurFactor * _BlurRatio); } ENDCG } } }