ZK_Framework/Assets/UniStorm 3.0/Shaders/UniStorm Stars.shader

117 lines
2.8 KiB
Plaintext

// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "UniStorm/Stars" {
Properties {
_Color ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
_StarTex1 ("Star Texture 1", 2D) = "white" {}
_StarTex2 ("Star Texture 2", 2D) = "white" {}
_StarSpeed ("Rotation Speed", Float) = 2.0
_InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
_LoY ("Opaque Y", Float) = 0
_HiY ("Transparent Y", Float) = 10
}
Category {
Tags { "Queue"="Transparent-1000" "IgnoreProjector"="True" "RenderType"="Transparent" }
Blend SrcAlpha One
ColorMask RGB
Cull Front
Lighting Off
ZWrite Off
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_particles
#pragma multi_compile_fog
#include "UnityCG.cginc"
sampler2D _StarTex1;
sampler2D _StarTex2;
fixed4 _Color;
half _LoY;
half _HiY;
struct appdata_t {
float4 vertex : POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
float4 texcoord1 : TEXCOORD1;
};
struct v2f {
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
float4 texcoord1 : TEXCOORD1;
#ifdef SOFTPARTICLES_ON
float4 projPos : TEXCOORD2;
#endif
};
float2 rotateUV(float2 uv, float degrees)
{
const float Rads = (UNITY_PI * 2.0) / 360.0;
float ConvertedRadians = degrees * Rads;
float _sin = sin(ConvertedRadians);
float _cos = cos(ConvertedRadians);
float2x2 R_Matrix = float2x2( _cos, -_sin, _sin, _cos);
uv -= 0.5;
uv = mul(R_Matrix, uv);
uv += 0.5;
return uv;
}
float4 _StarTex1_ST;
float4 _StarTex2_ST;
float _StarSpeed;
float _Rotation;
v2f vert (appdata_t v)
{
v2f o;
UNITY_INITIALIZE_OUTPUT(v2f,o);
o.vertex = UnityObjectToClipPos(v.vertex);
#ifdef SOFTPARTICLES_ON
o.projPos = ComputeScreenPos (o.vertex);
COMPUTE_EYEDEPTH(o.projPos.z);
#endif
o.color = v.color;
_Rotation = _Time.x*_StarSpeed*10;
o.texcoord1.xy = TRANSFORM_TEX(rotateUV(v.texcoord, _Rotation), _StarTex1);
o.texcoord1.zw = TRANSFORM_TEX(rotateUV(v.texcoord, _Rotation), _StarTex2);
float4 worldV = mul (unity_ObjectToWorld, v.vertex);
o.color.a = 1 - saturate((worldV.y - _LoY) / (_HiY - _LoY));
return o;
}
sampler2D_float _CameraDepthTexture;
float _InvFade;
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = 1.0f * i.color * _Color * (tex2D(_StarTex1, i.texcoord1.xy) + tex2D(_StarTex2, i.texcoord1.zw));
return col;
}
ENDCG
}
}
}
}