JJBB/Assets/Project/Shader/PlayerWing.shader

95 lines
2.4 KiB
Plaintext
Raw Normal View History

2024-08-23 15:49:34 +08:00
Shader "Zhanyou/Character/PlayerWing"
{
Properties
{
_MainTex("Main Tex", 2D) = "white" {}
_Color ("Color", Color) = (1, 1, 1, 1)
_Emission ("Emission", Range(0, 1)) = 0
// 流光贴图
_FlowTex ("Flow (RGB)", 2D) = "black" {}
// 流光颜色
_FlowColor ("Flow Color", Color) = (1, 1, 1, 1)
// 流光速度u
_FlowSpeedU ("Flow Speed U", Float) = 1
// 流光速度v
_FlowSpeedV ("Flow Speed V", Float) = 0
// 流光角度 - 0到360度
_FlowRadian ("Flow Direction", Range(0, 6.283)) = 0
}
Category
{
Tags { "Queue"="AlphaTest+52" "IgnoreProjector"="True" "RenderType"="CharacterCutout" }
Blend SrcAlpha OneMinusSrcAlpha
Cull Back
Lighting Off
ZWrite Off
ZTest LEqual
Offset 0, -0.01
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"
#include "FlowColorBase.cginc"
uniform sampler2D _MainTex;
uniform float4 _MainTex_ST;
uniform half4 _Color;
uniform sampler2D _FlowTex;
uniform half4 _FlowTex_ST;
uniform half4 _FlowColor;
uniform float _FlowSpeedU;
uniform float _FlowSpeedV;
uniform float _FlowRadian;
uniform float _Emission;
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD0;
float2 flowUv : TEXCOORD1;
UNITY_FOG_COORDS(2)
};
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
float flowSin = sin(_FlowRadian);
float flowCos = cos(_FlowRadian);
o.flowUv = float2(flowCos * v.texcoord.x - flowSin * v.texcoord.y, flowSin * v.texcoord.x + flowCos * v.texcoord.y);
o.flowUv = TRANSFORM_TEX(o.flowUv, _FlowTex) + float2(_FlowSpeedU, _FlowSpeedV) * _Time.y;
UNITY_TRANSFER_FOG(o, o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 c = tex2D(_MainTex, i.texcoord);
c.rgb *= _Color.rgb;
c.rgb *= 1 + _Emission;
c.a *= _Color.a;
fixed4 flowCol = tex2D(_FlowTex, i.flowUv);
flowCol *= _FlowColor;
c.rgb += flowCol.rgb * flowCol.a;
UNITY_APPLY_FOG(i.fogCoord, c);
return c;
}
ENDCG
}
}
CustomEditor "FlowToggleShaderGui"
Fallback "Unlit/Texture"
}
}