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

1394 lines
51 KiB
Plaintext

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "TENKOKU/cloud_plane" {
Properties {
_dist ("Distance", float) = 500.0
_brightMult ("Brightness", float) = 1.0
_cloudHeight ("Cloud Height", float) = 1.0
//_cloudSpeed ("Cloud Speed", float) = 1.0
_sizeCloud ("Cloud Size", Range(0.0, 1.0)) = 1.0
_amtCloudS ("Cloud Stratus", Range(0.0, 1.0)) = 1.0
_amtCloudC ("Cloud Cirrus", Range(0.0, 1.0)) = 1.0
_amtCloudM ("Cloud Cumulus", Range(0.0, 1.0)) = 1.0
_amtCloudO ("Cloud Overcast", Range(0.0, 1.0)) = 1.0
_clpCloud ("Cloud Clip", Range(0.0, 1.0)) = 1.0
_colTint ("Cloud Tint", Color) = (1.0, 1.0, 1.0, 1.0)
_colCloudS ("Cloud Stratus Color", Color) = (1.0, 1.0, 1.0, 1.0)
_colCloudC ("Cloud Cirrus Color", Color) = (1.0, 1.0, 1.0, 1.0)
_colCloud ("Cloud Cumulus Color", Color) = (1.0, 1.0, 1.0, 1.0)
_colCloudO ("Cloud Overcast Color", Color) = (1.0, 1.0, 1.0, 1.0)
_MainTex ("Clouds A", 2D) = "white" {}
_CloudTexB ("Clouds B)", 2D) = "white" {}
_BlendTex ("Blend", 2D) = "white" {}
}
SubShader {
//##### ALTOSTRATUS CLOUD #####
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
Fog {Mode Off}
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha nofog noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloudS;
float _clpCloud;
float4 windCoords;
float _amtCloudS;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
//alpha
col.a = s.Alpha;
//final lighting
//col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_Vec_SunFwd,half3(0,1,0))) + skyColor.rgb);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
//col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult,_Tenkoku_Ambient);
//col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 20 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.8,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(1.0,1.0,1.0),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(1.5*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col = col * atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz -= v.normal*0.2;
}
void surf (Input IN, inout SurfaceOutput o) {
//half c = tex2D(_MainTex, IN.uv_MainTex * 1.0 + float2(1.0,_Time*_cloudSpeed*0.3)).b*0.9;
half c = tex2D(_MainTex, IN.uv_MainTex * 0.5 + (windCoords.xy*_cloudSpd.x)).b;
//half m = tex2D(_MainTex, IN.uv_MainTex *30.0 + float2(1.0,_Time*(_cloudSpeed*0.3)+max(_Time*0.5,(_cloudSpeed*0.25)))).b;
o.Albedo = fixed3(1,1,1);
o.Alpha = c*_amtCloudS;//saturate(lerp(m,2.0,c))*min(0.75,c)*_colCloudS.a;
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
//clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//##### END #####
//##### CIRRUS CLOUD #####
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloudC;
float _clpCloud;
float4 windCoords;
float _amtCloudC;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
col.a = s.Alpha;
//final lighting
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
//col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*0.9,_Tenkoku_Ambient);
col.rgb = col.rgb * lerp(1.0-_brightMult,(_brightMult*0.7)*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.8,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(1.0,1.0,1.0),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(3*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col = col * atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz -= v.normal*0.1;
}
void surf (Input IN, inout SurfaceOutput o) {
//half c = tex2D(_MainTex, IN.uv_MainTex *1.0 + float2(1.0,_Time*_cloudSpeed*0.5)).g*0.9;
half c = tex2D(_MainTex, IN.uv_MainTex * 1.4 + (windCoords.xy*_cloudSpd.y)).g;
//half m = tex2D(_MainTex, IN.uv_MainTex *30.0 + float2(1.0,_Time*(_cloudSpeed*0.5)+max(_Time*0.5,(_cloudSpeed*0.25)))).g;
o.Albedo = fixed3(1,1,1);
o.Alpha = c * _amtCloudC;//*_colCloudC.a;
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloudC;
float _clpCloud;
float4 windCoords;
float _amtCloudC;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
col.a = s.Alpha;
//final lighting
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
//col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*0.9,_Tenkoku_Ambient);
col.rgb = col.rgb * lerp(1.0-_brightMult,(_brightMult*0.8)*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 30 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.8,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(1.0,1.0,1.0),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(3*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col = col * atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz -= v.normal*0.198;
}
void surf (Input IN, inout SurfaceOutput o) {
//half c = tex2D(_MainTex, IN.uv_MainTex *1.0 + float2(1.0,_Time*_cloudSpeed*0.5)).g*0.9;
half c = tex2D(_MainTex, IN.uv_MainTex * 1.4 + (windCoords.xy*_cloudSpd.y)).g;
//half m = tex2D(_MainTex, IN.uv_MainTex *30.0 + float2(1.0,_Time*(_cloudSpeed*0.5)+max(_Time*0.5,(_cloudSpeed*0.25)))).g;
o.Albedo = fixed3(1,1,1);
o.Alpha = c*_amtCloudC;//saturate(lerp(m,2.0,c))*min(0.75,c)*_colCloudC.a;
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//##### END #####
//##### LOW CLOUD #####
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha * 0.4;
col.a *= 0.2;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*1.1*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.1,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(1.0,1.0,1.0),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(6*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.013*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
//o.Albedo = _colTint;//fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
half f = tex2D(_CloudTexB, IN.uv_CloudTexB * 8.0 + ((_Time.x*_cloudSpd*0.00001)+windCoords.xy*10.0)).a*0.6;
o.Alpha = saturate(o.Alpha+lerp(-1.0,0.7,f))*(o.Alpha*3);
o.Alpha = saturate(o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha * 0.5;
col.a *= 0.2;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*1.1*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.1,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(1.0,1.0,1.0),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(5*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.014*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
half f = tex2D(_CloudTexB, IN.uv_CloudTexB * 6.0 + ((_Time.x*_cloudSpd*0.00001)+windCoords.xy*8.0)).a*0.4;
o.Alpha = saturate(o.Alpha+lerp(-1.0,0.7,f))*(o.Alpha*3);
o.Alpha = saturate(o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a *= 0.2;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*1.1*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.2,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.95,0.95,0.95),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(4*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.017*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
half f = tex2D(_CloudTexB, IN.uv_CloudTexB * 4.0 + ((_Time.x*_cloudSpd*0.00001)+windCoords.xy*6.0)).a*0.5;
o.Alpha = saturate(o.Alpha+lerp(-1.0,0.7,f))*(o.Alpha*3);
o.Alpha = saturate(o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//---
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha * 0.7;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*1.1*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.8,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.9,0.9,0.9),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(3*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.02*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
half f = tex2D(_CloudTexB, IN.uv_CloudTexB * 6.0 + ((_Time.x*_cloudSpd*0.00001)+windCoords.xy*6.0)).a*0.5;
o.Alpha = saturate(o.Alpha+lerp(-1.0,0.7,f))*(o.Alpha*3);
o.Alpha = saturate(o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//---
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha * 0.8;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*1.1*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.8,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.85,0.85,0.85),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(2*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.024*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
half f = tex2D(_CloudTexB, IN.uv_CloudTexB * 2.0 + ((_Time.x*_cloudSpd*0.00001)+windCoords.xy*6.0)).a*0.5;
o.Alpha = saturate(o.Alpha+lerp(-1.0,0.7,f))*(o.Alpha*3);
o.Alpha = saturate(o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//--------------------- end detail clouds
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,_brightMult*1.1*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 40 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,0.8,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.8,0.8,0.8),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*max(1,(2*saturate(dot(-viewDir,Tenkoku_SunFwd_half)))),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.027*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,lerp(1.0,_brightMult*1.1,0.75)*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 30 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,1.0,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.75,0.75,0.75),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.03*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
o.Alpha = lerp(-0.1,1.0,o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha * _colCloud.a;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,lerp(1.0,_brightMult*1.1,0.5)*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 20 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,1.4,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.65,0.65,0.65),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.033*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
o.Alpha = lerp(-0.25,1.0,o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
col.a = s.Alpha * _colCloud.a;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
col.rgb = col.rgb * lerp(1.0-_brightMult,lerp(1.0,_brightMult*1.1,0.35)*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 20 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,1.4,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.65,0.65,0.65),fixed3(fCol.rgb),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.038*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
o.Alpha = lerp(-0.4,1.0,o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
sampler2D _CloudTexB;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloud;
float _clpCloud;
float _sizeCloud;
float4 windCoords;
float _amtCloudM;
float4 _colTint;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
float2 uv_CloudTexB;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
half3 Tenkoku_SunFwd_half = half3(Tenkoku_Vec_SunFwd.x, Tenkoku_Vec_SunFwd.y, Tenkoku_Vec_SunFwd.z);
//alpha
col.a = s.Alpha * _colCloud.a;
col.a = col.a * (1-saturate(_Tenkoku_overcastColor.a*4.0));
//final lighting
col.rgb = saturate(saturate(max(max(_Tenkoku_Daylight.r,_Tenkoku_Daylight.g),_Tenkoku_Daylight.b) * dot(Tenkoku_SunFwd_half,half3(0,1,0))) + skyColor.rgb);
//col.rgb = col.rgb * lerp(_brightMult,1.0,depth);
col.rgb = col.rgb * lerp(1.0-_brightMult,lerp(1.0,_brightMult*1.1,0.25)*depth,_Tenkoku_Ambient);
col.rgb += (saturate(1.0-_Tenkoku_Ambient) * _Tenkoku_Nightlight * 12 * (1.0-saturate(pow(0.998,dot(-viewDir,Tenkoku_Vec_MoonFwd.xyz)-0.5))));
half3 fCol = lerp(half3(1,1,1),lerp(_TenkokuCloudColor.rgb,half3(1,1,1),_Tenkoku_overcastColor.a*2),lerp(0.0,1.5,dot(-Tenkoku_SunFwd_half,viewDir)));
col.rgb = col.rgb * lerp(fixed3(0.6,0.6,0.6),fixed3(fCol.rgb)*fixed3(0.9,0.9,0.9),saturate(dot(-viewDir,Tenkoku_SunFwd_half)));
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col *= atten;
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
v.vertex.xyz += v.normal*0.04*_cloudHeight;
o.screenPos = UnityObjectToClipPos (v.vertex);
}
void surf (Input IN, inout SurfaceOutput o) {
//half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB + float2(1.0,_Time*_cloudSpeed));
half4 c = tex2D(_CloudTexB, IN.uv_CloudTexB * 1.0 + (windCoords.xy*_cloudSpd.z));
half d = tex2D(_MainTex, IN.uv_MainTex * 1.0 + (windCoords.xy*_cloudSpd.z)).a;
//half m = tex2D(_CloudTexB, IN.uv_CloudTexB *20.0 + float2(1.0,_Time*(_cloudSpeed)+max(_Time*0.5,(_cloudSpeed*0.25)))).a;
o.Albedo = fixed3(1,1,1);
o.Alpha = lerp(0.0,c.r,saturate(lerp(0.0,4.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.g,saturate(lerp(-1.0,3.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.b,saturate(lerp(-2.0,2.0,_sizeCloud)));
o.Alpha += lerp(0.0,c.a,saturate(lerp(-3.0,1.0,_sizeCloud)));
o.Alpha += lerp(0.0,d,saturate(lerp(-4.0,1.0,_sizeCloud)));
o.Alpha = saturate(o.Alpha*1.0);//*_amtCloudM;
o.Alpha = lerp(-0.5,1.0,o.Alpha);
o.Alpha *= tex2D(_BlendTex, IN.uv_BlendTex).r;
half s = tex2D(_CloudTexB, IN.uv_CloudTexB * 3.0 + (windCoords.xy*3.0)).a;
o.Albedo -= lerp(0,2.0,s);
o.Albedo = saturate(o.Albedo);
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
clip(o.Alpha-_clpCloud);
half dpth = max(IN.screenPos.w,0.001)/(_TenkokuDist);
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//##### END LOW CLOUD #####
//##### OVERCAST CLOUD #####
Tags { "Queue"="Transparent-1" }
Fog {Mode Off}
Blend SrcAlpha OneMinusSrcAlpha
Offset 1,880000
CGPROGRAM
#pragma target 3.0
#pragma surface surf CloudLight vertex:vert alpha noambient noforwardadd
sampler2D _MainTex;
sampler2D _BlendTex;
float _cloudHeight;
//float _cloudSpeed;
float4 _colCloudO;
float _clpCloud;
float _AmbientShift;
float4 windCoords;
float _amtCloudO;
float4 _TenkokuCloudColor,_Tenkoku_Daylight,_Tenkoku_Nightlight;
float4 _TenkokuCloudHighlightColor;
sampler2D _Tenkoku_SkyTex;
float4 _Tenkoku_overcastColor;
float4 skyColor,_cloudSpd;
float4 Tenkoku_Vec_MoonFwd,Tenkoku_Vec_SunFwd,Tenkoku_Vec_LightningFwd;
float _Tenkoku_Ambient;
float depth;
float _Tenkoku_shaderDepth;
float _TenkokuDist;
float _brightMult;
float4 _TenkokuAmbientColor;
float Tenkoku_LightningIntensity;
float Tenkoku_LightningLightIntensity;
float4 Tenkoku_LightningColor;
float blend;
float _tenkokuTimer;
struct Input {
float4 screenPos;
//float3 pos;
float2 uv_MainTex;
float2 uv_BlendTex;
};
fixed4 LightingCloudLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten){
fixed4 col = half4(0,0,0,0);
//base color
col.rgb = _colCloudO.rgb * s.Albedo;
//alpha
col.a = saturate(s.Alpha * (_Tenkoku_overcastColor.a*1.2));
col.a = saturate(col.a + (_Tenkoku_overcastColor.a*1.2));
//overcast
half skyFac = max(max(skyColor.r,skyColor.g),skyColor.b) * _Tenkoku_overcastColor.a;
//col.rgb = s.Albedo * lerp(_Tenkoku_Ambient*0.1,_Tenkoku_Ambient*0.35,saturate(skyFac*2));
//skyColor.rgb = lerp(skyColor.rgb*0.58,skyColor.rgb*0.1,saturate(_Tenkoku_overcastColor.a*1.1));
skyColor.rgb += Tenkoku_LightningColor * Tenkoku_LightningLightIntensity * 1.4;
col.rgb = saturate(lerp(skyColor.rgb * 1.15,col.rgb,depth));
col.rgb = lerp(col.rgb,col.rgb*half3(0.8,0.89,0.9)*0.75,saturate(_Tenkoku_overcastColor.a*1.5));
//sunlight
//col.rgb *= lerp(1.0, 1.0 * _Tenkoku_Daylight.rgb * skyColor.rgb, saturate((dot(-viewDir,Tenkoku_Vec_SunFwd)-0.3)));//(1-depth) * blend * saturate(lerp(0,0.1*saturate(lerp(-0.1,1,(s.Albedo.r))),dot(-viewDir,Tenkoku_Vec_SunFwd)-0.1)) );
col *= atten;
//lightning
half3 lCol = Tenkoku_LightningColor;//half3(0.89,0.85,0.68);
half cMask = saturate(lerp(-0.3,2.0,s.Albedo.r));
//bolt lightning
col.rgb += lCol * (Tenkoku_LightningLightIntensity * 0.2 * (1-s.Albedo.r));
col.rgb += lCol * saturate((saturate(dot(-viewDir,Tenkoku_Vec_LightningFwd.xyz)-0.2)) * Tenkoku_LightningLightIntensity * 0.7 * s.Albedo.r);
//cloud lightning
col.rgb += lCol * saturate((saturate(dot(-viewDir,Tenkoku_Vec_LightningFwd.xyz)-0.5)) * Tenkoku_LightningIntensity * 0.05 * s.Albedo.r * cMask);
col.rgb += lCol * saturate((saturate(dot(-viewDir,Tenkoku_Vec_LightningFwd.xyz)-0.4)) * Tenkoku_LightningIntensity * 1.0 * s.Albedo.r);
//lightning root
col.rgb += lCol * ((saturate(dot(-viewDir,Tenkoku_Vec_LightningFwd.xyz)-0.9998)) * Tenkoku_LightningLightIntensity * 2930.8 * s.Albedo.r);
col.rgb += ((saturate(dot(-viewDir,Tenkoku_Vec_LightningFwd.xyz)-0.9999)) * Tenkoku_LightningLightIntensity * 2930.8 * s.Albedo.r);
return col;
}
inline void vert (inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input,o);
v.vertex.xyz += v.normal*4;
}
void surf (Input IN, inout SurfaceOutput o) {
half c = tex2D(_MainTex, IN.uv_MainTex * 8.0 + (windCoords.xy*_cloudSpd.w)).r;
o.Albedo = 0.6;
half3 cl = fixed3(c,c,c);
o.Albedo = lerp(o.Albedo,cl,saturate(_Tenkoku_overcastColor.a * 1.0));
o.Alpha = saturate(lerp(0.0,2.0,saturate(_Tenkoku_overcastColor.a*1)));
blend = tex2D(_BlendTex, IN.uv_BlendTex).r;
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_SkyTex, UNITY_PROJ_COORD(uv0))*0.88;
half dpth = max(IN.screenPos.w,0.001)/_TenkokuDist;
depth = saturate(lerp(3,0,dpth));
}
ENDCG
//##### END OVERCAST CLOUD #####
}
}