diff --git a/client/shaders/fog.gdshader b/client/shaders/fog.gdshader index f39a9b721..2590be87d 100644 --- a/client/shaders/fog.gdshader +++ b/client/shaders/fog.gdshader @@ -53,8 +53,11 @@ void fragment() { // D-059: animated Perlin noise, 8-10s cycle float noise_val = texture(noise_tex, tile * 0.03 + vec2(time * 0.11, time * 0.07)).r; float coverage = smoothstep(PERIPHERAL_LOW, CLEAR_THRESHOLD, vis); - // Blend from heavy fog (alpha ~0.55) to lighter fog near clear edge - float alpha = mix(0.55, 0.25, coverage) + noise_val * 0.1; + // Blend from heavy fog (alpha ~0.38) to lighter fog near clear edge + // Taper noise to zero near the clear boundary — preserves breathing in deep + // peripheral but keeps the Layer 1/2 transition clean (no curly edge) + float noise_weight = 1.0 - smoothstep(0.5, 1.0, coverage); + float alpha = mix(0.38, 0.25, coverage) + noise_val * 0.05 * noise_weight; COLOR = vec4(DARK_OVERLAY, alpha); } } else if (explored > 0.3) { @@ -63,7 +66,7 @@ void fragment() { vec3 zone_tint = texture(zone_tint_tex, tex_uv).rgb; float noise_val = texture(noise_tex, tile * 0.015 + vec2(time * 0.045, time * 0.03)).r; vec3 tint_color = mix(vec3(0.04), zone_tint, 0.1); - float alpha = mix(0.78, 0.90, noise_val); // Fog breathes + float alpha = mix(0.62, 0.76, noise_val); // Fog breathes COLOR = vec4(tint_color, alpha); } else { // Layer 5: Unexplored, no maps — information zero