From c239ca6bd5d8a2b15b95699b95ae30abf7234a36 Mon Sep 17 00:00:00 2001 From: Voyager Date: Thu, 13 Aug 2026 11:13:09 -0400 Subject: [PATCH] Correct foggy ocean horizon blending --- tests/world_time_validation.gd | 15 +++++++-------- tests/world_weather_validation.gd | 15 +++++++-------- world/world_time_visual_controller.gd | 12 ++++++------ 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/tests/world_time_validation.gd b/tests/world_time_validation.gd index bf4f510..85e6efe 100644 --- a/tests/world_time_validation.gd +++ b/tests/world_time_validation.gd @@ -311,15 +311,14 @@ func _validate_environment_presentation() -> void: assert(float( SaltWaterMaterial.get_shader_parameter("weather_fog_amount") ) > 0.99) - var night_rendered_fog_color := Color( - runtime_environment.fog_light_color.r - * runtime_environment.fog_light_energy, - runtime_environment.fog_light_color.g - * runtime_environment.fog_light_energy, - runtime_environment.fog_light_color.b - * runtime_environment.fog_light_energy, - 1.0, + var night_rendered_fog_color := ( + runtime_environment.fog_light_color.srgb_to_linear() ) + night_rendered_fog_color.r *= runtime_environment.fog_light_energy + night_rendered_fog_color.g *= runtime_environment.fog_light_energy + night_rendered_fog_color.b *= runtime_environment.fog_light_energy + night_rendered_fog_color.a = 1.0 + night_rendered_fog_color = night_rendered_fog_color.linear_to_srgb() var night_water_fog_color := ( SaltWaterMaterial.get_shader_parameter("weather_fog_color") as Color ) diff --git a/tests/world_weather_validation.gd b/tests/world_weather_validation.gd index 90f3aae..60cfd85 100644 --- a/tests/world_weather_validation.gd +++ b/tests/world_weather_validation.gd @@ -335,15 +335,14 @@ func _validate_weather_presentation() -> void: "weather_fog_color" ) as Color ) - var rendered_fog_color := Color( - runtime_environment.fog_light_color.r - * runtime_environment.fog_light_energy, - runtime_environment.fog_light_color.g - * runtime_environment.fog_light_energy, - runtime_environment.fog_light_color.b - * runtime_environment.fog_light_energy, - 1.0, + var rendered_fog_color := ( + runtime_environment.fog_light_color.srgb_to_linear() ) + rendered_fog_color.r *= runtime_environment.fog_light_energy + rendered_fog_color.g *= runtime_environment.fog_light_energy + rendered_fog_color.b *= runtime_environment.fog_light_energy + rendered_fog_color.a = 1.0 + rendered_fog_color = rendered_fog_color.linear_to_srgb() assert(water_fog_color.is_equal_approx(rendered_fog_color)) assert(runtime_environment.fog_depth_begin <= 4.01) assert(is_equal_approx(runtime_environment.fog_depth_end, 18.0)) diff --git a/world/world_time_visual_controller.gd b/world/world_time_visual_controller.gd index f6a9de8..876c1b3 100644 --- a/world/world_time_visual_controller.gd +++ b/world/world_time_visual_controller.gd @@ -441,12 +441,12 @@ func _apply_water_environment( func _fog_render_color(fog_color: Color, fog_light_energy: float) -> Color: - return Color( - fog_color.r * fog_light_energy, - fog_color.g * fog_light_energy, - fog_color.b * fog_light_energy, - 1.0, - ) + var linear_fog_color := fog_color.srgb_to_linear() + linear_fog_color.r *= fog_light_energy + linear_fog_color.g *= fog_light_energy + linear_fog_color.b *= fog_light_energy + linear_fog_color.a = 1.0 + return linear_fog_color.linear_to_srgb() func _apply_sky_clouds(daylight: float, warmth: float) -> void: