From 3bbd3d9aafeaefa9639632306c4b06e50949ce02 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Sun, 12 Feb 2023 16:50:08 +0100 Subject: [PATCH] animate water --- Assets/sunset_box/sunset_env_dynamic.shader | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Assets/sunset_box/sunset_env_dynamic.shader b/Assets/sunset_box/sunset_env_dynamic.shader index fee4381..b7f2d95 100644 --- a/Assets/sunset_box/sunset_env_dynamic.shader +++ b/Assets/sunset_box/sunset_env_dynamic.shader @@ -22,6 +22,7 @@ _StarTint ("Star tint", Range(0, 1)) = 0.4 [Header(Water)] _WaterCol ("Water color", Color) = (0.03, 0.08, 0.12, 1.0) + [NoScaleOffset] _WaterSurface ("Surface Normal", 2D) = "white" {} _Temp ("Wave scale", Range(0, 1)) = 0 [Header(Debug)] @@ -90,6 +91,16 @@ return o; } + fixed3 get_water_normal(float2 pos) { + float3 normal = 0.0; + float t1 = _Time.x * 0.2; + normal += (tex2D(_WaterSurface, pos * 1.0 + float2(t1, t1*0.5)) - 0.5); + float t2 = _Time.x * 0.5; + normal += (tex2D(_WaterSurface, pos * 0.2 + float2(t2*0.5, t2)) - 0.5) * 0.25; + + return normalize(normal.zxy); + } + fixed4 frag (v2f i) : SV_Target { float water_mod = 0.0; @@ -104,7 +115,7 @@ 0.0, camera_local_pos.z - camera_local_pos.y / (real_dir.y / real_dir.z) ); - float3 water_normal = normalize((tex2D(_WaterSurface, surface_pos.xz * _Temp) - 0.5).zxy); + float3 water_normal = get_water_normal(surface_pos.xz); dir = reflect(dir, water_normal); water_mod = dot(dir, water_normal); @@ -163,13 +174,7 @@ float sun_amount = max(min(_SunRadius/alignment * sun_gradient, 5) - _SunCutoff, 0); col = lerp(col, _SunCol, sun_amount); - col = lerp(col, _WaterCol, water_mod); - - // debug, this should not be visible - if (dir.y < 0) { - return fixed4(1, 0, 0, 1); - } return col; } ENDCG