| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- Shader "Custom/UIBlur"
- {
- Properties
- {
- [Toggle(IS_BLUR_ALPHA_MASKED)] _IsAlphaMasked("Image Alpha Masks Blur", Float) = 1
- [Toggle(IS_SPRITE_VISIBLE)] _IsSpriteVisible("Show Image", Float) = 1
- // Internally enforced by MAX_RADIUS
- _Radius("Blur Radius", Range(0, 64)) = 1
- _OverlayColor("Blurred Overlay/Opacity", Color) = (0.5, 0.5, 0.5, 1)
- // see Stencil in UI/Default
- [HideInInspector][PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
- [HideInInspector]_StencilComp ("Stencil Comparison", Float) = 8
- [HideInInspector]_Stencil ("Stencil ID", Float) = 0
- [HideInInspector]_StencilOp ("Stencil Operation", Float) = 0
- [HideInInspector]_StencilWriteMask ("Stencil Write Mask", Float) = 255
- [HideInInspector]_StencilReadMask ("Stencil Read Mask", Float) = 255
- [HideInInspector]_ColorMask ("Color Mask", Float) = 15
- [HideInInspector]_UseUIAlphaClip ("Use Alpha Clip", Float) = 0
- }
- Category
- {
- Tags
- {
- "Queue" = "Transparent"
- "IgnoreProjector" = "True"
- "RenderType" = "Transparent"
- "PreviewType" = "Plane"
- "CanUseSpriteAtlas" = "True"
- }
- Stencil
- {
- Ref [_Stencil]
- Comp [_StencilComp]
- Pass [_StencilOp]
- ReadMask [_StencilReadMask]
- WriteMask [_StencilWriteMask]
- }
- Cull Off
- Lighting Off
- ZWrite Off
- ZTest [unity_GUIZTestMode]
- Blend SrcAlpha OneMinusSrcAlpha
- ColorMask [_ColorMask]
- SubShader
- {
- GrabPass
- {
- Tags
- {
- "LightMode" = "Always"
- "Queue" = "Background"
- }
- }
- Pass
- {
- Name "UIBlur_Y"
- Tags{ "LightMode" = "Always" }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma multi_compile __ IS_BLUR_ALPHA_MASKED
- #pragma multi_compile __ IS_SPRITE_VISIBLE
- #pragma multi_compile __ UNITY_UI_ALPHACLIP
- #include "UIBlur_Shared.cginc"
- sampler2D _GrabTexture;
- float4 _GrabTexture_TexelSize;
- half4 frag(v2f IN) : COLOR
- {
- half4 pixel_raw = tex2D(_MainTex, IN.uvmain);
- return GetBlurInDir(IN, pixel_raw, _GrabTexture, _GrabTexture_TexelSize, 0, 1);
- }
- ENDCG
- }
-
- GrabPass
- {
- Tags
- {
- "LightMode" = "Always"
- "Queue" = "Background"
- }
- }
- Pass
- {
- Name "UIBlur_X"
- Tags{ "LightMode" = "Always" }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma multi_compile __ IS_BLUR_ALPHA_MASKED
- #pragma multi_compile __ IS_SPRITE_VISIBLE
- #pragma multi_compile __ UNITY_UI_ALPHACLIP
- #include "UIBlur_Shared.cginc"
- sampler2D _GrabTexture;
- float4 _GrabTexture_TexelSize;
- half4 frag(v2f IN) : COLOR
- {
- half4 pixel_raw = tex2D(_MainTex, IN.uvmain);
- #if IS_SPRITE_VISIBLE
- return layerBlend(
- // Layer 0 : The blurred background
- GetBlurInDir(IN, pixel_raw, _GrabTexture, _GrabTexture_TexelSize, 1, 0),
- // Layer 1 : The sprite itself
- pixel_raw * IN.color
- );
- #else
- return GetBlurInDir(IN, pixel_raw, _GrabTexture, _GrabTexture_TexelSize, 1, 0);
- #endif
- }
- ENDCG
- }
- }
- }
- Fallback "UI/Default"
- }
|