1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*
- Simple box blur shader for UI elements, blurring the background.
- This variant uses shared textures for faster grab passes. This means all
- blurry widgets will share the same effect/texture/blur, so you won't be able
- to layer them on top of each other and still achieve the same effect.
- Use the "UI/Blur" variant if you need that, but be aware it may be slower.
- */
- Shader "UI/BlurFast" {
- 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 _UIBlurXTex, _UIBlurYTex;
- float4 PS_BlurX(
- float4 p : SV_POSITION,
- float2 uv1 : TEXCOORD0,
- float4 uv2 : TEXCOORD1
- ) : SV_TARGET {
- return blur_x(uv1, uv2, _UIBlurXTex);
- }
- 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, _UIBlurYTex);
- }
- ENDCG
- GrabPass {
- "_UIBlurXTex"
- Tags {
- "LightMode" = "Always"
- }
- }
- Pass {
- CGPROGRAM
- #pragma vertex VS_QuadProj
- #pragma fragment PS_BlurX
- ENDCG
- }
- GrabPass {
- "_UIBlurYTex"
- Tags {
- "LightMode" = "Always"
- }
- }
- Pass {
- CGPROGRAM
- #pragma vertex VS_QuadProjColor
- #pragma fragment PS_BlurY
- ENDCG
- }
- }
- }
|