diff --git a/Assets/sunset_box/Sunset Env.mat b/Assets/sunset_box/Sunset Env.mat index 2aae5e5..cc79cb4 100644 --- a/Assets/sunset_box/Sunset Env.mat +++ b/Assets/sunset_box/Sunset Env.mat @@ -90,9 +90,9 @@ Material: - _SunAngle: 0 - _SunCutoff: 0.121 - _SunRadius: 0.037 - - _Temp: 0.5 + - _Temp: 0.703 - _UVSec: 0 - - _WaveStrength: 0.6 + - _WaveStrength: 0.5 - _ZWrite: 1 m_Colors: - _Color: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/sunset_box/sunset_env_dynamic.shader b/Assets/sunset_box/sunset_env_dynamic.shader index 4688023..e24ae53 100644 --- a/Assets/sunset_box/sunset_env_dynamic.shader +++ b/Assets/sunset_box/sunset_env_dynamic.shader @@ -93,16 +93,18 @@ } float3 get_water_normal(float2 pos) { + pos *= 0.03; float3 normal = 0; float t1 = _Time.x * 0.18; normal += (tex2D(_WaterSurface, pos * 1.04 + float2(t1, t1 * 0.5)) - 0.5); float t2 = _Time.x * 0.37; normal += (tex2D(_WaterSurface, pos * 0.276 + float2(t2 * 0.8, t2)) - 0.5); - float t3 = _Time.x * 0.08; - normal += (tex2D(_WaterSurface, pos * 0.07 + float2(t3 * 0.8, -t3)) - 0.5); + // float t3 = _Time.x * 0.08; + // normal += (tex2D(_WaterSurface, pos * 0.07 + float2(t3 * 0.8, -t3)) - 0.5); + normal = normalize(normal.zxy); // return UP; - return lerp(UP, normalize(normal.zxy), _WaveStrength); + return lerp(UP, normal, _WaveStrength); } inline float smin(float a, float b, float k) @@ -168,14 +170,17 @@ float4 frag(v2f i) : SV_Target { - float3 sun_dir = normalize(mul(unity_ObjectToWorld, float4(0, 0, 1, 1)) * float3(1, 0, 1)); + // float3 horizon_col = lerp(_SkyCol, _SunCol, _HorizonTint); + float3 origin = mul(unity_ObjectToWorld, float4(0, 0, 0, 1)); + float3 sun_dir = normalize(mul(unity_ObjectToWorld, float4(0, 0, 1, 1)) * float3(1, 0, 1) - origin); float3 dir = normalize(i.hit_pos - i.cam_pos); float theta = atan2(dir.x, dir.z); // latitude float phi = asin(dir.y); // longitude + float3 col; + if (phi < 0) { - float3 origin = mul(unity_ObjectToWorld, float4(0, 0, 0, 1)); origin.y += _HeightOffset; float3 camera_local_pos = i.cam_pos - origin; camera_local_pos.y = max(camera_local_pos.y, 0.01); // don't allow looking under water surface; it renders backwards. @@ -190,14 +195,16 @@ phi = asin(dir.y); float hit_angle = dot(dir, water_normal); - float3 col = sky(dir, theta, phi, sun_dir); - col = lerp(col, _WaterCol, hit_angle); - return float4(col, 1); + float3 sky_reflection = sky(dir, theta, phi, sun_dir); + col = lerp(sky_reflection, _WaterCol, hit_angle); + // float distance = length(surface_pos - camera_local_pos); + // float fog_factor = smoothstep(10, 70, distance) * 0.4; + // col = lerp(col, horizon_col, fog_factor); } else { - float3 col = sky(dir, theta, phi, sun_dir); - return float4(col, 1); + col = sky(dir, theta, phi, sun_dir); } + return float4(col, 1); } ENDCG }