86 lines
2.4 KiB
GLSL
86 lines
2.4 KiB
GLSL
Shader "BF/PostEffect/Blur"
|
|
{
|
|
Properties
|
|
{
|
|
[HideInInspector]_MainTex("MainTex", 2D) = "white"{}
|
|
_BlurSize("BlurSize", Float)=1
|
|
}
|
|
SubShader
|
|
{
|
|
CGINCLUDE
|
|
#include "UnityCG.cginc"
|
|
|
|
sampler2D _MainTex;
|
|
float4 _MainTex_TexelSize;
|
|
float _BlurSize;
|
|
|
|
struct a2v
|
|
{
|
|
float4 pos : POSITION;
|
|
float4 uv : TEXCOORD0;
|
|
};
|
|
|
|
struct v2f
|
|
{
|
|
float4 pos : SV_POSITION;
|
|
half2 uvs[5] : TEXCOORD0;
|
|
};
|
|
|
|
v2f vertVertical(a2v v)
|
|
{
|
|
v2f o;
|
|
o.pos = UnityObjectToClipPos(v.pos);
|
|
o.uvs[0] = v.uv.xy;
|
|
o.uvs[1] = v.uv.xy + float2(0, -1) * _MainTex_TexelSize.xy * _BlurSize;
|
|
o.uvs[2] = v.uv.xy + float2(0, -2) * _MainTex_TexelSize.xy * _BlurSize;
|
|
o.uvs[3] = v.uv.xy + float2(0, 1) * _MainTex_TexelSize.xy * _BlurSize;
|
|
o.uvs[4] = v.uv.xy + float2(0, 2) * _MainTex_TexelSize.xy * _BlurSize;
|
|
return o;
|
|
}
|
|
|
|
v2f vertHorizontal(a2v v)
|
|
{
|
|
v2f o;
|
|
o.pos = UnityObjectToClipPos(v.pos);
|
|
o.uvs[0] = v.uv.xy;
|
|
o.uvs[1] = v.uv.xy + float2(-1, 0) * _MainTex_TexelSize.xy * _BlurSize;
|
|
o.uvs[2] = v.uv.xy + float2(-2, 0) * _MainTex_TexelSize.xy * _BlurSize;
|
|
o.uvs[3] = v.uv.xy + float2(1, 0) * _MainTex_TexelSize.xy * _BlurSize;
|
|
o.uvs[4] = v.uv.xy + float2(2, 0) * _MainTex_TexelSize.xy * _BlurSize;
|
|
return o;
|
|
}
|
|
|
|
fixed4 frag(v2f f) : SV_TARGET
|
|
{
|
|
float weight[3] = {0.4026, 0.2442, 0.0545};
|
|
|
|
fixed4 o;
|
|
o = tex2D(_MainTex, f.uvs[0]) * weight[0];
|
|
o += tex2D(_MainTex, f.uvs[1]) * weight[1];
|
|
o += tex2D(_MainTex, f.uvs[2]) * weight[2];
|
|
o += tex2D(_MainTex, f.uvs[3]) * weight[1];
|
|
o += tex2D(_MainTex, f.uvs[4]) * weight[2];
|
|
return o;
|
|
}
|
|
ENDCG
|
|
Pass
|
|
{
|
|
NAME "GAUSSIAN_BLUR_VERTICAL"
|
|
CGPROGRAM
|
|
#pragma vertex vertVertical
|
|
#pragma fragment frag
|
|
ENDCG
|
|
}
|
|
|
|
Pass
|
|
{
|
|
NAME "GAUSSIAN_BLUR_HORIZONTAL"
|
|
CGPROGRAM
|
|
#pragma vertex vertHorizontal
|
|
#pragma fragment frag
|
|
ENDCG
|
|
}
|
|
}
|
|
//Fallback "Diffuse"
|
|
}
|