UIBlurFast.shader 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. Simple box blur shader for UI elements, blurring the background.
  3. This variant uses shared textures for faster grab passes. This means all
  4. blurry widgets will share the same effect/texture/blur, so you won't be able
  5. to layer them on top of each other and still achieve the same effect.
  6. Use the "UI/Blur" variant if you need that, but be aware it may be slower.
  7. */
  8. Shader "UI/BlurFast" {
  9. Properties {
  10. [HideInInspector]
  11. _MainTex("", 2D) = "" {}
  12. _Opacity("Opacity", Range(0.0, 1.0)) = 0.5
  13. _Size("Size", Range(1.0, 16.0)) = 4.0
  14. }
  15. SubShader {
  16. Tags {
  17. "Queue" = "Transparent"
  18. "IgnoreProjector" = "True"
  19. "RenderType" = "Transparent"
  20. "PreviewType" = "Plane"
  21. }
  22. Cull Off
  23. ZTest [unity_GUIZTestMode]
  24. ZWrite Off
  25. Blend SrcAlpha OneMinusSrcAlpha
  26. CGINCLUDE
  27. #include "UIBlur.cginc"
  28. sampler2D _UIBlurXTex, _UIBlurYTex;
  29. float4 PS_BlurX(
  30. float4 p : SV_POSITION,
  31. float2 uv1 : TEXCOORD0,
  32. float4 uv2 : TEXCOORD1
  33. ) : SV_TARGET {
  34. return blur_x(uv1, uv2, _UIBlurXTex);
  35. }
  36. float4 PS_BlurY(
  37. float4 p : SV_POSITION,
  38. float2 uv1 : TEXCOORD0,
  39. float4 uv2 : TEXCOORD1,
  40. float4 img_color : COLOR
  41. ) : SV_TARGET {
  42. return blur_y(uv1, uv2, img_color, _UIBlurYTex);
  43. }
  44. ENDCG
  45. GrabPass {
  46. "_UIBlurXTex"
  47. Tags {
  48. "LightMode" = "Always"
  49. }
  50. }
  51. Pass {
  52. CGPROGRAM
  53. #pragma vertex VS_QuadProj
  54. #pragma fragment PS_BlurX
  55. ENDCG
  56. }
  57. GrabPass {
  58. "_UIBlurYTex"
  59. Tags {
  60. "LightMode" = "Always"
  61. }
  62. }
  63. Pass {
  64. CGPROGRAM
  65. #pragma vertex VS_QuadProjColor
  66. #pragma fragment PS_BlurY
  67. ENDCG
  68. }
  69. }
  70. }