Guest User

Magic Circle

a guest
Apr 9th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.28 KB | None | 0 0
  1. Shader "Unlit/MagicCircle"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex ("Texture", 2D) = "white" {}
  6.         _Color ("Blur Color", Color) = (1, 1, 1, 1)
  7.         _BlurIntensity ("Blur Intensity", Range(0.0, 1.0)) = 0.5
  8.         _BlurAmount ("Blur Amount", Range(0.0, 0.005)) = 0.0
  9.     }
  10.     SubShader
  11.     {
  12.         Tags { "Queue"="Transparent" "RenderType"="Transparent" }
  13.         LOD 100
  14.         ZWrite Off
  15.         Cull Off
  16.  
  17.         Pass
  18.         {
  19.             Blend SrcAlpha OneMinusSrcAlpha
  20.            
  21.             CGPROGRAM
  22.             #pragma vertex vert
  23.             #pragma fragment frag
  24.            
  25.             #include "UnityCG.cginc"
  26.  
  27.             struct appdata
  28.             {
  29.                 float4 vertex : POSITION;
  30.                 float2 uv : TEXCOORD0;
  31.             };
  32.  
  33.             struct v2f
  34.             {
  35.                 float2 uv : TEXCOORD0;
  36.                 float4 vertex : SV_POSITION;
  37.             };
  38.  
  39.             sampler2D _MainTex;
  40.             float4 _MainTex_ST;
  41.            
  42.             v2f vert (appdata v)
  43.             {
  44.                 v2f o;
  45.                 o.vertex = UnityObjectToClipPos(v.vertex);
  46.                 o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  47.                 return o;
  48.             }
  49.            
  50.             fixed4 frag (v2f i) : SV_Target
  51.             {
  52.                 fixed4 col = tex2D(_MainTex, i.uv);
  53.                 return col;
  54.             }
  55.             ENDCG
  56.         }
  57.        
  58.         Pass
  59.         {
  60.             Blend One One
  61.        
  62.             CGPROGRAM
  63.             #pragma vertex vert
  64.             #pragma fragment frag
  65.            
  66.             #include "UnityCG.cginc"
  67.            
  68.             float normpdf(float x, float sigma)
  69.             {
  70.                 return 0.39894*exp(-0.5*x*x / (sigma*sigma)) / sigma;
  71.             }
  72.  
  73.             half4 blur(sampler2D tex, float2 uv,float blurAmount) {
  74.                 half4 col = tex2D(tex, uv);
  75.                 const int mSize = 11;
  76.                 const int iter = (mSize - 1) / 2;
  77.                 for (int i = -iter; i <= iter; ++i) {
  78.                     for (int j = -iter; j <= iter; ++j) {
  79.                         col += tex2D(tex, float2(uv.x + i * blurAmount, uv.y + j * blurAmount)) * normpdf(float(i), 7);
  80.                     }
  81.                 }
  82.                 return col/mSize;
  83.             }
  84.            
  85.  
  86.             struct appdata
  87.             {
  88.                 float4 vertex : POSITION;
  89.                 float2 uv : TEXCOORD0;
  90.             };
  91.  
  92.             struct v2f
  93.             {
  94.                 float2 uv : TEXCOORD0;
  95.                 float4 vertex : SV_POSITION;
  96.             };
  97.  
  98.             sampler2D _MainTex;
  99.             float4 _MainTex_ST;
  100.             float _BlurIntensity;
  101.             float _BlurAmount;
  102.             float4 _Color;
  103.            
  104.             v2f vert (appdata v)
  105.             {
  106.                 v2f o;
  107.                 o.vertex = UnityObjectToClipPos(v.vertex);
  108.                 o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  109.                 return o;
  110.             }
  111.            
  112.             fixed4 frag (v2f i) : SV_Target
  113.             {
  114.                 fixed4 col = blur(_MainTex, i.uv, _BlurAmount);
  115.                 return _Color * col.a * _BlurIntensity;
  116.             }
  117.             ENDCG
  118.         }
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment