Files
JJBB/Assets/Project/Shader/RadialBlur.shader

53 lines
1.6 KiB
Plaintext
Raw Normal View History

2024-08-23 15:49:34 +08:00
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
}
}
}