Unify foggy water presentation and remove shoreline ribbons

This commit is contained in:
Alexander Sellite 2026-08-13 16:25:43 -04:00
parent 3576daba16
commit 405bdaa2d2
8 changed files with 209 additions and 10 deletions

View file

@ -313,7 +313,12 @@ func _validate_starter_water_bodies() -> void:
assert(pond.fish_pool == PondPool)
assert(ocean.fish_pool == OceanPool)
assert(region.get_node_or_null("ShorelineRibbons/Pond") == null)
assert(region.get_node_or_null("ShorelineRibbons/Ocean") != null)
var shoreline_geometry := (
region.get_node_or_null("ShorelineRibbons/Ocean") as MeshInstance3D
)
assert(shoreline_geometry != null)
assert(not shoreline_geometry.visible)
assert(shoreline_geometry.material_override == null)
var pond_material := (
region.get_node("WaterBodies/Pond/VisualWater") as MeshInstance3D
).material_override as ShaderMaterial

View file

@ -23,8 +23,6 @@ const SaltWaterMaterial: ShaderMaterial = preload(
const FreshWaterMaterial: ShaderMaterial = preload(
"res://world/materials/stylized_water_fresh.tres"
)
func _initialize() -> void:
call_deferred("_run")
@ -254,10 +252,28 @@ func _validate_environment_presentation() -> void:
var water_shader: Shader = preload(
"res://world/materials/stylized_water.gdshader"
)
var sky_shader: Shader = preload(
"res://world/environment/netfishing_sky.gdshader"
)
assert("uniform float fog_horizon_occlusion" in sky_shader.code)
assert("fog_horizon_color.rgb" in sky_shader.code)
assert("fog_disabled" in water_shader.code)
assert("surface_view_position = view_vertex.xyz" in water_shader.code)
assert("surface_view_distance = length(surface_view_position)" in water_shader.code)
assert(
"max(weather_fog_end, weather_fog_begin + 1.0),\n"
+ "\t\tsurface_view_distance"
in water_shader.code
)
assert("weather_fog_near_amount" in water_shader.code)
assert("float weather_fog_alpha = mix(" in water_shader.code)
assert("ALPHA = clamp(water_alpha, 0.1, weather_fog_alpha)" in water_shader.code)
assert(is_zero_approx(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_amount")
)))
assert(is_equal_approx(float(
SaltWaterMaterial.get_shader_parameter("surface_highlight_night_floor")
), WorldTimeVisualController.DEFAULT_SURFACE_HIGHLIGHT_FLOOR))
var day_water_brightness := float(
SaltWaterMaterial.get_shader_parameter("environment_brightness")
)
@ -288,6 +304,9 @@ func _validate_environment_presentation() -> void:
assert(night_moon_direction.y > 0.85)
assert(night_moon_direction.is_equal_approx(-night_sun_direction))
assert(runtime_environment.ambient_light_energy < day_ambient_energy)
assert(is_zero_approx(float(
runtime_sky_material.get_shader_parameter("fog_horizon_occlusion")
)))
var night_water_brightness := float(
SaltWaterMaterial.get_shader_parameter("environment_brightness")
)
@ -311,6 +330,18 @@ func _validate_environment_presentation() -> void:
assert(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_amount")
) > 0.99)
assert(is_equal_approx(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_near_amount")
), WorldTimeVisualController.FOGGY_NIGHT_WATER_NEAR_FOG_AMOUNT))
assert(is_equal_approx(float(
SaltWaterMaterial.get_shader_parameter("surface_highlight_night_floor")
), WorldTimeVisualController.FOGGY_NIGHT_SURFACE_HIGHLIGHT_FLOOR))
assert(is_equal_approx(float(
runtime_sky_material.get_shader_parameter("fog_horizon_occlusion")
), 1.0))
assert((
runtime_sky_material.get_shader_parameter("fog_horizon_color") as Color
).is_equal_approx(WorldTimeVisualController.NIGHT_FOG))
var night_rendered_fog_color := (
runtime_environment.fog_light_color.srgb_to_linear()
)
@ -322,7 +353,17 @@ func _validate_environment_presentation() -> void:
var night_water_fog_color := (
SaltWaterMaterial.get_shader_parameter("weather_fog_color") as Color
)
assert(night_water_fog_color.is_equal_approx(night_rendered_fog_color))
var corrected_night_fog_color := night_rendered_fog_color
corrected_night_fog_color.r *= (
WorldTimeVisualController.FOGGY_DARK_WATER_FOG_CORRECTION.r
)
corrected_night_fog_color.g *= (
WorldTimeVisualController.FOGGY_DARK_WATER_FOG_CORRECTION.g
)
corrected_night_fog_color.b *= (
WorldTimeVisualController.FOGGY_DARK_WATER_FOG_CORRECTION.b
)
assert(night_water_fog_color.is_equal_approx(corrected_night_fog_color))
var foggy_sky_horizon := (
runtime_sky_material.get_shader_parameter("sky_horizon_color") as Color
)
@ -355,12 +396,35 @@ func _validate_environment_presentation() -> void:
runtime_environment.adjustment_saturation,
night_adjustment_saturation,
))
visuals.apply_time_immediately(8.0)
assert(is_equal_approx(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_near_amount")
), WorldTimeVisualController.FOGGY_NIGHT_WATER_NEAR_FOG_AMOUNT))
assert(is_equal_approx(float(
runtime_sky_material.get_shader_parameter("fog_horizon_occlusion")
), 1.0))
visuals.apply_time_immediately(20.0)
assert(is_zero_approx(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_near_amount")
)))
assert(is_zero_approx(float(
runtime_sky_material.get_shader_parameter("fog_horizon_occlusion")
)))
visuals.apply_weather_immediately(WorldWeatherService.Weather.SUNNY)
visuals.apply_time_immediately(20.0)
assert(not runtime_environment.fog_enabled)
assert(is_zero_approx(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_amount")
)))
assert(is_zero_approx(float(
SaltWaterMaterial.get_shader_parameter("weather_fog_near_amount")
)))
assert(is_equal_approx(float(
SaltWaterMaterial.get_shader_parameter("surface_highlight_night_floor")
), WorldTimeVisualController.DEFAULT_SURFACE_HIGHLIGHT_FLOOR))
assert(is_zero_approx(float(
runtime_sky_material.get_shader_parameter("fog_horizon_occlusion")
)))
var dusk_horizon: Color = runtime_sky_material.get_shader_parameter(
"sky_horizon_color"
) as Color

View file

@ -330,6 +330,11 @@ func _validate_weather_presentation() -> void:
"weather_fog_amount"
)
) > 0.99)
assert(is_zero_approx(float(
WorldTimeVisualControllerType.SALT_WATER_MATERIAL.get_shader_parameter(
"weather_fog_near_amount"
)
)))
var water_fog_color := (
WorldTimeVisualControllerType.SALT_WATER_MATERIAL.get_shader_parameter(
"weather_fog_color"
@ -344,6 +349,11 @@ func _validate_weather_presentation() -> void:
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(is_equal_approx(float(
WorldTimeVisualControllerType.SALT_WATER_MATERIAL.get_shader_parameter(
"surface_highlight_night_floor"
)
), WorldTimeVisualControllerType.DEFAULT_SURFACE_HIGHLIGHT_FLOOR))
assert(runtime_environment.fog_depth_begin <= 4.01)
assert(is_equal_approx(runtime_environment.fog_depth_end, 18.0))
assert(is_equal_approx(runtime_environment.fog_sky_affect, 1.0))
@ -394,6 +404,11 @@ func _validate_weather_presentation() -> void:
"weather_fog_amount"
)
) > 0.99)
assert(is_zero_approx(float(
WorldTimeVisualControllerType.SALT_WATER_MATERIAL.get_shader_parameter(
"weather_fog_near_amount"
)
)))
var rainy_water_fog_color := (
WorldTimeVisualControllerType.SALT_WATER_MATERIAL.get_shader_parameter(
"weather_fog_color"
@ -404,6 +419,11 @@ func _validate_weather_presentation() -> void:
WorldTimeVisualControllerType.RAIN_WATER_FOG_COLOR
)
)
assert(is_equal_approx(float(
WorldTimeVisualControllerType.SALT_WATER_MATERIAL.get_shader_parameter(
"surface_highlight_night_floor"
)
), WorldTimeVisualControllerType.DEFAULT_SURFACE_HIGHLIGHT_FLOOR))
assert(is_equal_approx(runtime_environment.fog_sky_affect, 0.68))
assert(
float(runtime_sky_material.get_shader_parameter("cloud_coverage"))