NewN_UAVPlane/Assets/3rdParty/TENKOKU - DYNAMIC SKY/SHADERS/Tenkoku_moonsphere.shader

122 lines
2.4 KiB
Plaintext

Shader "TENKOKU/moonsphere_shader" {
Properties
{
_PrimaryTint("Primary Tint", Color) = (1,1,1,1)
_Color ("Main Color", Color) = (1,1,1,1)
_AmbientTint ("Ambient Tint", Color) = (1,1,1,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
_BRDFTex ("BRDF", 2D) = "white" {}
_overBright ("OverBright", float) = 1.0
_dispStrength ("Displace Amount", Range(0.0,3.0)) = 1.0
_GlowColor ("Glow Color", Color) = (0.5,0.5,0.5,0.5)
}
SubShader
{
// Tags {"Queue"= "Overlay+8"}
Tags {"Queue"="Background+1605"}
Cull Back
Fog {Mode Off}
Offset 1,993000
Lighting Off
ZWrite Off
CGPROGRAM
#pragma surface surf MyLight alpha nofog noambient noforwardadd
sampler2D _MainTex;
fixed4 _AmbientTint;
float4 _PrimaryTint;
float4 Tenkoku_MoonLightColor;
float4 Tenkoku_MoonHorizColor;
float4 Tenkoku_Vec_SunFwd;
sampler2D _Tenkoku_SkyTex;
sampler2D _Tenkoku_SkyBox;
float4 skyColor;
float4 _Tenkoku_overcastColor;
float _Tenkoku_NightBright;
float _Tenkoku_Ambient;
float Tenkoku_MoonHFac;
float _tenkokuIsLinear;
struct Input{
float4 screenPos;
float2 uv_MainTex;
};
void surf(Input IN, inout SurfaceOutput o){
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
tex.rgb *= clamp(lerp(-0.25,3,tex.r),0,3);
o.Albedo = tex.rgb;
o.Alpha = 1.0;
float4 uv0 = IN.screenPos; uv0.xy;
uv0 = float4(max(0.001f, uv0.x),max(0.001f, uv0.y),max(0.001f, uv0.z),max(0.001f, uv0.w));
skyColor = tex2Dproj(_Tenkoku_SkyBox, UNITY_PROJ_COORD(uv0));//*0.96;
half3 mTCol = lerp(half3(1,1,1), Tenkoku_MoonHorizColor.rgb * 2, Tenkoku_MoonHorizColor.a);
o.Albedo = o.Albedo.rgb * _PrimaryTint.rgb * lerp( mTCol, 1.0, max(Tenkoku_MoonHFac,_Tenkoku_Ambient));
//Extend Brightness Range
o.Albedo.r = lerp(0.0, 2.5, o.Albedo.r);
o.Albedo.g = lerp(0.0, 2.1, o.Albedo.g);
o.Albedo.b = lerp(0.0, 2.0, o.Albedo.b);
//gamma shift
if (_tenkokuIsLinear == 0.0){
o.Albedo = saturate(o.Albedo * 0.4646);
}
}
fixed4 LightingMyLight(SurfaceOutput s, half3 lightDir, fixed atten){
half4 light = half4(1,1,1,1);
half alph = saturate(max(0.0,dot(s.Normal,Tenkoku_Vec_SunFwd.xyz)) * 2);
light.rgb = lerp(skyColor.rgb, s.Albedo.rgb*max(0.5,Tenkoku_MoonLightColor)*lerp(2.0,5.0,_AmbientTint), alph);
light.rgb = lerp(light.rgb,skyColor.rgb, min(0.8,_AmbientTint.r));
//Max Light vs Sky
light.rgb = max(skyColor.rgb,light.rgb);
light.a = saturate(lerp(1,-3,_Tenkoku_overcastColor.a));
return light;
}
ENDCG
}
}