Shader "MyShaders/Image Effects/Aura Shader"{ Properties{ _MainTex("Texture", 2D) = "white"{} _Color("Color",Color) = (1,1,1,1) _NoiseTex("Noise Texture", 2D) = "white"{} _Intensity("Intensity",Range(0,1)) = 0 _AuraColor("Aura Color",Color) = (1,1,1,1) } SubShader{ Pass{ HLSLPROGRAM #pragma vertex MyVertexProgram #pragma fragment MyFragmentProgram #include "UnityCG.cginc" struct VertexData { float4 position : POSITION; float2 uv : TEXCOORD0; float2 uvNoise : TEXCOORD1; }; struct VertexToFragment { float4 position : SV_POSITION; float2 uv : TEXCOORD0; float2 uvNoise : TEXCOORD1; }; sampler2D _MainTex; sampler2D _NoiseTex; float4 _MainTex_ST; float4 _Color; float4 _NoiseTex_ST; float _Intensity; float4 _AuraColor; VertexToFragment MyVertexProgram(VertexData vertex) { VertexToFragment v2f; v2f.position = UnityObjectToClipPos(vertex.position); v2f.uv = vertex.uv * _MainTex_ST.xy + _MainTex_ST.zw; v2f.uvNoise = vertex.uvNoise * _NoiseTex_ST.xy + _NoiseTex_ST.zw; return v2f; } float4 MyFragmentProgram(VertexToFragment v2f) : SV_TARGET { float4 nsTex = tex2D(_NoiseTex, v2f.uvNoise + (_Time.x * 2)); float4 bckTex = tex2D(_MainTex, v2f.uv); bckTex = bckTex * _Color; float4 inverseColor = abs(float4(1,1,1,1) - nsTex); float4 colorClamped = clamp(inverseColor,float4(0.7,0.7,0.7,0.7),float4(1,1,1,1)) * _AuraColor; float4 lerpdColor = lerp(bckTex, colorClamped, _Intensity); return lerpdColor; } ENDHLSL } } }