mirror of
https://github.com/FriendshipIsEpic/FiE-Game.git
synced 2024-12-01 01:18:00 +01:00
122 lines
2.2 KiB
Text
122 lines
2.2 KiB
Text
|
Shader "Hidden/Ultimate/FlareSingle" {
|
||
|
Properties {
|
||
|
_MainTex ("Base (RGB)", 2D) = "white" {}
|
||
|
}
|
||
|
|
||
|
|
||
|
Subshader
|
||
|
{
|
||
|
Pass
|
||
|
{
|
||
|
ZTest Always Cull Off ZWrite Off
|
||
|
Fog { Mode off }
|
||
|
|
||
|
CGPROGRAM
|
||
|
|
||
|
|
||
|
#include "UnityCG.cginc"
|
||
|
|
||
|
struct v2f
|
||
|
{
|
||
|
half4 pos : SV_POSITION;
|
||
|
half2 uv : TEXCOORD0;
|
||
|
half4 uv0 : TEXCOORD1;
|
||
|
half4 uv1 : TEXCOORD2;
|
||
|
half4 uv2 : TEXCOORD3;
|
||
|
half4 uv3 : TEXCOORD4;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
sampler2D _MainTex;
|
||
|
sampler2D _FlareTexture;
|
||
|
half _Intensity;
|
||
|
|
||
|
half4 _FlareScales;
|
||
|
half4 _FlareScalesNear;
|
||
|
half4 _FlareTint0;
|
||
|
half4 _FlareTint1;
|
||
|
half4 _FlareTint2;
|
||
|
half4 _FlareTint3;
|
||
|
half4 _FlareTint4;
|
||
|
half4 _FlareTint5;
|
||
|
half4 _FlareTint6;
|
||
|
half4 _FlareTint7;
|
||
|
|
||
|
half2 cUV(half2 uv)
|
||
|
{
|
||
|
return 2.0 * uv - float2(1.0,1.0);
|
||
|
}
|
||
|
|
||
|
half2 tUV(half2 uv)
|
||
|
{
|
||
|
return (uv + float2(1.0,1.0))*0.5;
|
||
|
}
|
||
|
|
||
|
v2f vert( appdata_img v )
|
||
|
{
|
||
|
v2f o;
|
||
|
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
|
||
|
o.uv = v.texcoord.xy;
|
||
|
|
||
|
half scale0 = _FlareScales.x;
|
||
|
half scale1 = _FlareScales.y;
|
||
|
half scale2 = _FlareScales.z;
|
||
|
half scale3 = _FlareScales.w;
|
||
|
|
||
|
half2 flareUv = cUV(half2(1.0,1.0) - o.uv);
|
||
|
o.uv0.xy = tUV(flareUv*scale0);
|
||
|
o.uv1.xy = tUV(flareUv*scale1);
|
||
|
o.uv2.xy = tUV(flareUv*scale2);
|
||
|
o.uv3.xy = tUV(flareUv*scale3);
|
||
|
|
||
|
half scale4 = _FlareScalesNear.x;
|
||
|
half scale5 = _FlareScalesNear.y;
|
||
|
half scale6 = _FlareScalesNear.z;
|
||
|
half scale7 = _FlareScalesNear.w;
|
||
|
|
||
|
flareUv = cUV(o.uv);
|
||
|
o.uv0.zw = tUV(flareUv*scale4);
|
||
|
o.uv1.zw = tUV(flareUv*scale5);
|
||
|
o.uv2.zw = tUV(flareUv*scale6);
|
||
|
o.uv3.zw = tUV(flareUv*scale7);
|
||
|
|
||
|
return o;
|
||
|
}
|
||
|
|
||
|
fixed4 frag(v2f i):COLOR
|
||
|
{
|
||
|
half2 flareUv = cUV(float2(1.0,1.0) - i.uv);
|
||
|
|
||
|
float4 acc = float4(0,0,0,0);
|
||
|
|
||
|
acc += tex2D(_MainTex, i.uv0.xy ) * _FlareTint0;
|
||
|
acc += tex2D(_MainTex, i.uv1.xy ) * _FlareTint1;
|
||
|
acc += tex2D(_MainTex, i.uv2.xy ) * _FlareTint2;
|
||
|
acc += tex2D(_MainTex, i.uv3.xy ) * _FlareTint3;
|
||
|
|
||
|
#ifdef FLARE_DOUBLE
|
||
|
flareUv = cUV(i.uv);
|
||
|
|
||
|
acc += tex2D(_MainTex, i.uv0.zw ) * _FlareTint4;
|
||
|
acc += tex2D(_MainTex, i.uv1.zw ) * _FlareTint5;
|
||
|
acc += tex2D(_MainTex, i.uv2.zw ) * _FlareTint6;
|
||
|
acc += tex2D(_MainTex, i.uv3.zw ) * _FlareTint7;
|
||
|
#endif
|
||
|
|
||
|
return clamp(acc *_Intensity,0, 65000);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#pragma fragmentoption ARB_precision_hint_fastest
|
||
|
#pragma vertex vert
|
||
|
#pragma fragment frag
|
||
|
|
||
|
ENDCG
|
||
|
}
|
||
|
}
|
||
|
FallBack "Diffuse"
|
||
|
}
|