feat(world): underwater sky ambient, soft shadows and SSAO for the dive site
The environment declared the sky as its ambient source without a sky, so shadowed faces received no ambient light. A procedural underwater sky now feeds ambient and reflections; the directional light is steeper and stronger with 70 % soft shadows; SSAO, filmic tonemapping, aerial perspective and tinted volumetric fog complete the pass. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
No files matched your search
|
Before Width: | Height: | Size: 268 KiB After Width: | Height: | Size: 547 KiB |
|
Before Width: | Height: | Size: 296 KiB After Width: | Height: | Size: 599 KiB |
|
Before Width: | Height: | Size: 377 KiB After Width: | Height: | Size: 610 KiB |
|
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 507 KiB |
|
Before Width: | Height: | Size: 206 KiB After Width: | Height: | Size: 449 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 360 KiB |
@@ -250,6 +250,13 @@ de contacts existant les sépare du fond.
|
|||||||
du tombant, têtes de corail sur les patch reefs, rien d'animé.
|
du tombant, têtes de corail sur les patch reefs, rien d'animé.
|
||||||
- Brouillard, lumière directionnelle et particules de la scène de test
|
- Brouillard, lumière directionnelle et particules de la scène de test
|
||||||
actuelle sont conservés et réglés par site.
|
actuelle sont conservés et réglés par site.
|
||||||
|
- Passe lumière du 2026-10-06 (`dive_site.tscn`) : l'ambiance vient d'un ciel
|
||||||
|
procédural sous-marin (haut turquoise, horizon aligné sur le brouillard, bas
|
||||||
|
presque noir), ce qui éclaire les faces à l'ombre ; la source d'ambiance
|
||||||
|
« ciel » était déclarée sans ciel, d'où les ombres noires. Directionnelle
|
||||||
|
plus haute et plus forte (62°, 1,35) avec ombres douces à 70 % d'opacité,
|
||||||
|
SSAO pour l'occlusion à l'échelle du maillage, tonemap filmique, perspective
|
||||||
|
aérienne et albédo du brouillard volumétrique teintés.
|
||||||
|
|
||||||
**État du 2026-10-06 (demande d'Olivier)** : le shader mélange sable et roche
|
**État du 2026-10-06 (demande d'Olivier)** : le shader mélange sable et roche
|
||||||
par la pente à partir de 20° (sable sous 20°, roche au-dessus de 40°, fondu
|
par la pente à partir de 20° (sable sous 20°, roche au-dessus de 40°, fondu
|
||||||
|
|||||||
@@ -1,31 +1,69 @@
|
|||||||
[gd_scene load_steps=4 format=3]
|
[gd_scene load_steps=6 format=3]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://game/world/sites/dive_site.gd" id="1_site"]
|
[ext_resource type="Script" path="res://game/world/sites/dive_site.gd" id="1_site"]
|
||||||
[ext_resource type="Script" path="res://game/world/sites/bathymetric_terrain_actor.gd" id="2_terrain"]
|
[ext_resource type="Script" path="res://game/world/sites/bathymetric_terrain_actor.gd" id="2_terrain"]
|
||||||
|
|
||||||
|
[sub_resource type="ProceduralSkyMaterial" id="SkyUnderwater"]
|
||||||
|
sky_top_color = Color(0.3, 0.62, 0.64, 1)
|
||||||
|
sky_horizon_color = Color(0.13, 0.36, 0.41, 1)
|
||||||
|
sky_curve = 0.2
|
||||||
|
sky_energy_multiplier = 1.0
|
||||||
|
ground_horizon_color = Color(0.11, 0.3, 0.35, 1)
|
||||||
|
ground_bottom_color = Color(0.015, 0.05, 0.07, 1)
|
||||||
|
ground_curve = 0.1
|
||||||
|
ground_energy_multiplier = 0.6
|
||||||
|
sun_angle_max = 40.0
|
||||||
|
sun_curve = 0.3
|
||||||
|
use_debanding = true
|
||||||
|
|
||||||
|
[sub_resource type="Sky" id="SkyResource"]
|
||||||
|
sky_material = SubResource("SkyUnderwater")
|
||||||
|
process_mode = 2
|
||||||
|
radiance_size = 2
|
||||||
|
|
||||||
[sub_resource type="Environment" id="EnvironmentUnderwater"]
|
[sub_resource type="Environment" id="EnvironmentUnderwater"]
|
||||||
background_mode = 1
|
background_mode = 2
|
||||||
background_color = Color(0.034, 0.12, 0.144, 1)
|
sky = SubResource("SkyResource")
|
||||||
ambient_light_source = 3
|
ambient_light_source = 3
|
||||||
ambient_light_color = Color(0.12, 0.32, 0.37, 1)
|
ambient_light_sky_contribution = 1.0
|
||||||
ambient_light_energy = 0.55
|
ambient_light_energy = 1.0
|
||||||
|
reflected_light_source = 1
|
||||||
|
tonemap_mode = 2
|
||||||
|
tonemap_exposure = 1.15
|
||||||
|
tonemap_white = 4.0
|
||||||
|
ssao_enabled = true
|
||||||
|
ssao_radius = 2.5
|
||||||
|
ssao_intensity = 2.2
|
||||||
|
ssao_power = 1.6
|
||||||
|
ssao_detail = 0.6
|
||||||
|
ssao_horizon = 0.08
|
||||||
|
ssao_light_affect = 0.25
|
||||||
|
ssao_ao_channel_affect = 0.4
|
||||||
glow_enabled = true
|
glow_enabled = true
|
||||||
glow_levels/1 = 1.0
|
glow_levels/1 = 1.0
|
||||||
glow_levels/2 = 1.0
|
glow_levels/2 = 1.0
|
||||||
glow_levels/3 = 0.6
|
glow_levels/3 = 0.6
|
||||||
glow_levels/4 = 0.2
|
glow_levels/4 = 0.2
|
||||||
glow_intensity = 1.0
|
glow_intensity = 0.8
|
||||||
glow_blend_mode = 0
|
glow_blend_mode = 0
|
||||||
glow_hdr_threshold = 1.0
|
glow_hdr_threshold = 1.2
|
||||||
fog_enabled = true
|
fog_enabled = true
|
||||||
fog_light_color = Color(0.07, 0.25, 0.3, 1)
|
fog_light_color = Color(0.1, 0.3, 0.35, 1)
|
||||||
fog_light_energy = 0.48
|
fog_light_energy = 0.52
|
||||||
|
fog_sun_scatter = 0.15
|
||||||
fog_density = 0.006
|
fog_density = 0.006
|
||||||
|
fog_aerial_perspective = 0.5
|
||||||
fog_height = -4.0
|
fog_height = -4.0
|
||||||
fog_height_density = 0.025
|
fog_height_density = 0.025
|
||||||
volumetric_fog_enabled = true
|
volumetric_fog_enabled = true
|
||||||
volumetric_fog_density = 0.01
|
volumetric_fog_density = 0.01
|
||||||
|
volumetric_fog_albedo = Color(0.6, 0.85, 0.9, 1)
|
||||||
|
volumetric_fog_anisotropy = 0.45
|
||||||
volumetric_fog_length = 72.0
|
volumetric_fog_length = 72.0
|
||||||
|
volumetric_fog_ambient_inject = 0.5
|
||||||
|
adjustment_enabled = true
|
||||||
|
adjustment_contrast = 1.06
|
||||||
|
adjustment_saturation = 1.08
|
||||||
|
|
||||||
[node name="DiveSite" type="Node3D"]
|
[node name="DiveSite" type="Node3D"]
|
||||||
script = ExtResource("1_site")
|
script = ExtResource("1_site")
|
||||||
@@ -34,10 +72,15 @@ script = ExtResource("1_site")
|
|||||||
environment = SubResource("EnvironmentUnderwater")
|
environment = SubResource("EnvironmentUnderwater")
|
||||||
|
|
||||||
[node name="AmbientDirection" type="DirectionalLight3D" parent="."]
|
[node name="AmbientDirection" type="DirectionalLight3D" parent="."]
|
||||||
rotation_degrees = Vector3(-52, -24, 0)
|
rotation_degrees = Vector3(-62, -28, 0)
|
||||||
light_color = Color(0.39, 0.65, 0.7, 1)
|
light_color = Color(0.56, 0.8, 0.82, 1)
|
||||||
light_energy = 0.75
|
light_energy = 1.35
|
||||||
|
light_angular_distance = 3.0
|
||||||
shadow_enabled = true
|
shadow_enabled = true
|
||||||
|
shadow_opacity = 0.7
|
||||||
|
shadow_blur = 2.0
|
||||||
|
directional_shadow_max_distance = 160.0
|
||||||
|
directional_shadow_fade_start = 0.75
|
||||||
|
|
||||||
[node name="Terrain" type="StaticBody3D" parent="."]
|
[node name="Terrain" type="StaticBody3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||