分享一个简易的屏幕后处理,模糊效果的shader实现:
Shader "Custom/BlurEffect"
{
Properties
{
_MainTex("Main Tex", 2D) = "white"{
}
_BlurSize("BlurSize", Range(0, 1)) = 1.0
}
SubShader
{
CGINCLUDE
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
half4 _MainTex_TexelSize;
float _BlurSize;
struct a2v
{
float4 vertex : POSITION;
float4 texcoord : TEXCOORD0;
};
struct v2f
{
float4 svPos : SV_POSITION;
float2 uv[5] : TEXCOORD0;
};
v2f vert_hor(a2v v)
{
v2f o;
o.svPos = UnityObjectToClipPos(v.vertex);
float2 uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv[0] = uv;
o.uv[1] = uv + float2(_MainTex_TexelSize.x * 1.0, 0.0) * _BlurSize;
o.uv