You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.6 KiB
Plaintext

// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
Shader "Hidden/Fur-spinner-circle"
{
Properties {
_MainTex ("Texture", Any) = "white" {}
}
CGINCLUDE
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#include "UnityCG.cginc"
#define PI 3.1415926
struct appdata_t {
float4 vertex : POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f {
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
float2 clipUV : TEXCOORD1;
UNITY_VERTEX_OUTPUT_STEREO
};
sampler2D _MainTex;
sampler2D _GUIClipTexture;
uniform bool _ManualTex2SRGB;
uniform float4 _MainTex_ST;
uniform fixed4 _Color;
uniform float4x4 unity_GUIClipTextureMatrix;
uniform float _EditorTime;
v2f vert (appdata_t v)
{
v2f o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
o.vertex = UnityObjectToClipPos(v.vertex);
float3 eyePos = UnityObjectToViewPos(v.vertex);
o.clipUV = mul(unity_GUIClipTextureMatrix, float4(eyePos.xy, 0, 1.0));
o.color = v.color;
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
return o;
}
const float Pi = 3.1415;
const float Width = 0.001;
static float4 Color_BackGround =float4(0, 0, 0, 0);
static float4 Color_Ring1 = float4(207.0/255.0, 115.0/255.0, 229.0/255.0, 1.0);
static float4 Color_Ring2 = float4(1.0, 133.0/255.0, 45.0/255.0, 1.0);
static float4 Color_Ring3 = float4(153.0/255.0, 220.0/255.0, 81.0/255.0,1.0);
static float4 Color_Ring4 = float4(90.0/255.0, 211.0/255.0, 172.0/255.0, 1.0);
static float4 Color_Ring5 = float4(55.0/255.0, 210.0/255.0, 232.0/255.0, 1.0);
float4 addRing(float4 Color, float4 ringColor,float2 Scaled, float t, float ringSize,float time){
const float Tau = 2.0*Pi;
float Length = length(Scaled);
float Angle = atan2(Scaled.y,Scaled.x)+Pi;
float Wave = fmod(time,Tau);
float AngleDifference = abs(Wave-Angle);
float DistanceToWave = min(AngleDifference,Tau-AngleDifference);
float FinalMultiplier = pow(max(1.,DistanceToWave),-1.);
float Ring1 = ringSize + 0.03*cos(Angle*2.0 +time)*FinalMultiplier;
Color = lerp(Color,ringColor,smoothstep(Width+t,Width,abs(Ring1-Length)));
return Color;
}
float4 frag (v2f i) : SV_Target
{
float2 Scaled = i.texcoord.xy + float2(-0.5, -0.5);
float t = 0.007;
float4 Color = Color_BackGround;
Color = addRing(Color, Color_Ring1, Scaled, t, .40,_EditorTime * 2.25);
Color = addRing(Color, Color_Ring2, Scaled, t, .395,_EditorTime * 2.5);
Color = addRing(Color, Color_Ring3, Scaled, t, .39,_EditorTime * 2.75);
Color = addRing(Color, Color_Ring4, Scaled, t, .385,_EditorTime * 3.0);
Color = addRing(Color, Color_Ring5, Scaled, t, .38,_EditorTime * 3.25);
return Color;
}
ENDCG
SubShader {
Lighting Off
Blend SrcAlpha OneMinusSrcAlpha, One One
Cull Off
ZWrite Off
ZTest Always
Pass {
CGPROGRAM
ENDCG
}
}
SubShader {
Lighting Off
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
ZWrite Off
ZTest Always
Pass {
CGPROGRAM
ENDCG
}
}
}