diff options
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/XGausBlur.cs')
-rw-r--r-- | Client/Assets/Scripts/XMainClient/XGausBlur.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/XGausBlur.cs b/Client/Assets/Scripts/XMainClient/XGausBlur.cs new file mode 100644 index 00000000..90c299c9 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/XGausBlur.cs @@ -0,0 +1,50 @@ +using System;
+using UnityEngine;
+
+internal class XGausBlur : XImageEffectBase
+{
+ public int iterations = 3;
+
+ public float blurSpread = 0.6f;
+
+ private void OnRenderImage(RenderTexture source, RenderTexture destination)
+ {
+ int num = source.width / 4;
+ int num2 = source.height / 4;
+ RenderTexture renderTexture = RenderTexture.GetTemporary(num, num2, 0);
+ this.DownSample4x(source, renderTexture);
+ for (int i = 0; i < this.iterations; i++)
+ {
+ RenderTexture temporary = RenderTexture.GetTemporary(num, num2, 0);
+ this.FourTapCone(renderTexture, temporary, i);
+ RenderTexture.ReleaseTemporary(renderTexture);
+ renderTexture = temporary;
+ }
+ Graphics.Blit(renderTexture, destination);
+ RenderTexture.ReleaseTemporary(renderTexture);
+ }
+
+ public void FourTapCone(RenderTexture source, RenderTexture dest, int iteration)
+ {
+ float num = 0.5f + (float)iteration * this.blurSpread;
+ Graphics.BlitMultiTap(source, dest, base.material, new Vector2[]
+ {
+ new Vector2(-num, -num),
+ new Vector2(-num, num),
+ new Vector2(num, num),
+ new Vector2(num, -num)
+ });
+ }
+
+ private void DownSample4x(RenderTexture source, RenderTexture dest)
+ {
+ float num = 1f;
+ Graphics.BlitMultiTap(source, dest, base.material, new Vector2[]
+ {
+ new Vector2(-num, -num),
+ new Vector2(-num, num),
+ new Vector2(num, num),
+ new Vector2(num, -num)
+ });
+ }
+}
|