Fixed stuff I broke by merging :-P

also twerked the waves a bit
This commit is contained in:
DeMuenu
2025-09-27 01:04:28 +02:00
parent b94c52da3c
commit 8780f50ebc
4 changed files with 89 additions and 55 deletions

View File

@@ -11,6 +11,8 @@ Shader "DeMuenu/World/Hoppou/Water"
_NormalMapScrollSpeed ("Normal Map Scroll Speed", Float) = 0.1
_NormalMapScrollSpeed2 ("Normal Map 2 Scroll Speed", Float) = 0.05
_MinTransparency ("Min Transparency", Range(0,1)) = 0
//Moonlight
_InverseSqareMultiplier ("Inverse Square Multiplier", Float) = 1
_LightCutoffDistance ("Light Cutoff Distance", Float) = 100
@@ -25,12 +27,11 @@ Shader "DeMuenu/World/Hoppou/Water"
//Moonlight END
_WaveInput ("Wave Input", 2D) = "black" {}
_WaveTex ("Wave Texture", 2D) = "black" {}
_CameraScale ("Camera Scale", Float) = 15
_CameraPositionZ ("Camera Position Z", Float) = 0
_CameraPositionX ("Camera Position X", Float) = 0
_WaveScale ("Wave Scale", Range(0.001, 100)) = 1
_WaveScale ("Wave Scale", Range(0.001, 2)) = 1
_WaveColor ("Wave Color", Color) = (1,1,1,1)
}
SubShader
{
@@ -84,6 +85,7 @@ Shader "DeMuenu/World/Hoppou/Water"
float _NormalMap2Tiling;
float _NormalMapScrollSpeed;
float _NormalMapScrollSpeed2;
float _MinTransparency;
MoonlightGlobalVariables
@@ -99,6 +101,7 @@ Shader "DeMuenu/World/Hoppou/Water"
float _CameraPositionZ;
float _CameraPositionX;
float _WaveScale;
float4 _WaveColor;
//Watershader specific END
@@ -134,18 +137,10 @@ Shader "DeMuenu/World/Hoppou/Water"
float3 NormalOffset1 = UnpackNormal(norm).xyz;
float3 NormalOffset2 = UnpackNormal(norm2).xyz;
float2 waveUV = float2(_CameraPositionX - i.worldPos.x, _CameraPositionZ - i.worldPos.z) / _CameraScale / 2 + 0.5;
fixed4 Wave = tex2D(_WaveInput, waveUV);
if ((waveUV.x < 0.1) || (waveUV.x > 0.9) || (waveUV.y < 0.1) || (waveUV.y > 0.9)){
Wave = float4(0,0,0,0);
}
//i.vertex += float4(0, Wave.g * _WaveScale, 0, 0);
//i.worldPos += float3(0, Wave.g * _WaveScale, 0);
//Moonlight
float3 N = normalize(i.worldNormal + NormalOffset1 * _NormalMapStrength1 + NormalOffset2 * _NormalMapStrength2 + Wave * _WaveScale); //for lambertian diffuse
float3 N = normalize(i.worldNormal + NormalOffset1 * _NormalMapStrength1 + NormalOffset2 * _NormalMapStrength2); //for lambertian diffuse
//Waterspecific
@@ -188,9 +183,33 @@ Shader "DeMuenu/World/Hoppou/Water"
dmax.a = dmax.a * _ReflectionStrength * fres;
//Moonlight END
float4 finalColor = col * _Color * dmax;
float2 waveUV = float2(_CameraPositionX - i.worldPos.x, _CameraPositionZ - i.worldPos.z) / _CameraScale / 2 + 0.5;
fixed4 Wave = tex2D(_WaveInput, waveUV);
if ((waveUV.x < 0.1) || (waveUV.x > 0.9) || (waveUV.y < 0.1) || (waveUV.y > 0.9)){
Wave = float4(0,0,0,0);
}
Wave.a = Wave.r;
Wave *= dmax;
float2 camXZ = float2(_CameraPositionX, _CameraPositionZ);
float2 posXZ = float2(i.worldPos.x, i.worldPos.z);
float dist = distance(posXZ, camXZ);
float distFade = 1.0 - smoothstep(0, _CameraScale, dist);
float4 waveCol = Wave * _WaveScale * _WaveColor;
float k = saturate(1 * distFade);
float4 outCol = finalColor;
outCol.rgb = lerp(outCol.rgb, waveCol.rgb, k);
outCol.a = max(outCol.a, _MinTransparency);
return outCol;
// Final color
return col * _Color * dmax ;
}
ENDCG
}

View File

@@ -3,13 +3,12 @@ Shader "DeMuenu/World/Hoppou/WaterParticle"
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_AlphaMap ("Alpha Map", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader
{
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend SrcAlpha OneMinusSrcAlpha // normal alpha blend (not additive)
Blend One One
ZWrite Off
Lighting Off
Cull Off
@@ -38,7 +37,6 @@ Shader "DeMuenu/World/Hoppou/WaterParticle"
sampler2D _MainTex;
float4 _MainTex_ST;
sampler2D _AlphaMap;
fixed4 _Color;
v2f vert (appdata v)
@@ -53,8 +51,7 @@ Shader "DeMuenu/World/Hoppou/WaterParticle"
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv) * _Color;
float alpha = tex2D(_AlphaMap, i.uv).r;
return col * alpha * i.color; // col.a drives the blend
return col * i.color; // col.a drives the blend
}
ENDCG
}