Files
Ransom-s-wake/game/world/sites/dive_site.tscn
OlivierandClaude Fable 5.1 029e2b99bd
Quality Gate / Quality Gate (pull_request) Failing after 3m10s
feat(world): world-space marine snow around the viewer
A GPUParticles3D emitter in the dive site re-centres on the active camera
every frame and restarts after a jump, so flakes keep their own slow sink
and drift while the submarine moves through them. Soft additive billboard
discs dimmed by the water column and faded over their life replace the
sphere volume that was attached to the submarine and turned with it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:25:02 +02:00

110 lines
3.3 KiB
Plaintext

[gd_scene load_steps=11 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/bathymetric_terrain_actor.gd" id="2_terrain"]
[ext_resource type="Shader" path="res://game/world/sites/water_column_fog.gdshader" id="3_water_column"]
[ext_resource type="Script" path="res://game/world/sites/seabed_flora_actor.gd" id="4_flora"]
[ext_resource type="Script" path="res://game/world/sites/marine_snow.gd" id="5_snow"]
[sub_resource type="ShaderMaterial" id="WaterColumnMaterial"]
shader = ExtResource("3_water_column")
[sub_resource type="ProceduralSkyMaterial" id="SkyUnderwater"]
sky_top_color = Color(0.22, 0.52, 0.66, 1)
sky_horizon_color = Color(0.09, 0.28, 0.4, 1)
sky_curve = 0.2
sky_energy_multiplier = 1.0
ground_horizon_color = Color(0.05, 0.17, 0.27, 1)
ground_bottom_color = Color(0.01, 0.03, 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"]
background_mode = 2
sky = SubResource("SkyResource")
ambient_light_source = 3
ambient_light_sky_contribution = 1.0
ambient_light_energy = 1.3
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_levels/1 = 1.0
glow_levels/2 = 1.0
glow_levels/3 = 0.6
glow_levels/4 = 0.2
glow_intensity = 0.8
glow_blend_mode = 0
glow_hdr_threshold = 1.2
fog_enabled = true
fog_light_color = Color(0.05, 0.18, 0.29, 1)
fog_light_energy = 0.38
fog_sun_scatter = 0.15
fog_density = 0.0045
fog_aerial_perspective = 0.5
fog_height = -4.0
fog_height_density = 0.025
volumetric_fog_enabled = true
volumetric_fog_density = 0.0
volumetric_fog_albedo = Color(0.5, 0.78, 0.92, 1)
volumetric_fog_anisotropy = 0.45
volumetric_fog_length = 128.0
volumetric_fog_detail_spread = 1.6
volumetric_fog_ambient_inject = 0.5
adjustment_enabled = true
adjustment_contrast = 1.06
adjustment_saturation = 1.08
[node name="DiveSite" type="Node3D"]
script = ExtResource("1_site")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("EnvironmentUnderwater")
[node name="AmbientDirection" type="DirectionalLight3D" parent="."]
rotation_degrees = Vector3(-62, -28, 0)
light_color = Color(0.5, 0.78, 0.88, 1)
light_energy = 0.9
light_angular_distance = 3.0
shadow_enabled = true
shadow_opacity = 0.45
shadow_blur = 2.0
directional_shadow_max_distance = 160.0
directional_shadow_fade_start = 0.75
[node name="WaterColumn" type="FogVolume" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -110, 0)
size = Vector3(1800, 260, 1800)
material = SubResource("WaterColumnMaterial")
[node name="Terrain" type="StaticBody3D" parent="."]
unique_name_in_owner = true
script = ExtResource("2_terrain")
[node name="Flora" type="Node3D" parent="."]
unique_name_in_owner = true
script = ExtResource("4_flora")
[node name="MarineSnow" type="GPUParticles3D" parent="."]
script = ExtResource("5_snow")
[node name="Placements" type="Node3D" parent="."]
unique_name_in_owner = true