123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- Simple box blur shader for UI elements, blurring the background.
- This variant uses independent grab passes to avoid glitches that occur when
- elements touch viewport borders.
- This also means it will work with multiple blurry widgets set on top of each
- other.
- */
- Shader "UI/Blur" {
- Properties {
- [HideInInspector]
- _MainTex("", 2D) = "" {}
- _Opacity("Opacity", Range(0.0, 1.0)) = 0.5
- _Size("Size", Range(1.0, 16.0)) = 4.0
- }
- SubShader {
- Tags {
- "Queue" = "Transparent"
- "IgnoreProjector" = "True"
- "RenderType" = "Transparent"
- "PreviewType" = "Plane"
- }
- Cull Off
- ZTest [unity_GUIZTestMode]
- ZWrite Off
- Blend SrcAlpha OneMinusSrcAlpha
- CGINCLUDE
- #include "UIBlur.cginc"
- sampler2D _GrabTexture;
- float4 PS_BlurX(
- float4 p : SV_POSITION,
- float2 uv1 : TEXCOORD0,
- float4 uv2 : TEXCOORD1
- ) : SV_TARGET {
- return blur_x(uv1, uv2, _GrabTexture);
- }
- float4 PS_BlurY(
- float4 p : SV_POSITION,
- float2 uv1 : TEXCOORD0,
- float4 uv2 : TEXCOORD1,
- float4 img_color : COLOR
- ) : SV_TARGET {
- return blur_y(uv1, uv2, img_color, _GrabTexture);
- }
- ENDCG
- GrabPass {
- Tags {
- "LightMode" = "Always"
- }
- }
- Pass {
- CGPROGRAM
- #pragma vertex VS_QuadProj
- #pragma fragment PS_BlurX
- ENDCG
- }
- GrabPass {
- Tags {
- "LightMode" = "Always"
- }
- }
- Pass {
- CGPROGRAM
- #pragma vertex VS_QuadProjColor
- #pragma fragment PS_BlurY
- ENDCG
- }
- }
- }
|