feat(render3d): rain that leaves something behind

Rain fell and the ground did not change: the weather was a curtain of particles in front
of a dry valley.

u_wet, 0 dry to 1 soaked, does the three things a wet surface does. Darkens the albedo.
Drops the roughness hard - which is what makes a soaked meadow read as soaked rather than
merely dark, because the sky glances off it. And pools: water finds the low places and
flat ground holds what a slope sheds, so the puddle mask is the macro noise the materials
already use gated on slope, and a puddle takes the world's up for its normal rather than
the ground's relief.

It joins the shore's existing wet band rather than fighting it - the same term from a
different cause.

34.1% of the frame changes between dry and soaked. GL 7.1 s either way over 400 frames.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-19 19:43:29 +03:00
parent 6169cd05b9
commit 031137a5fa
10 changed files with 98 additions and 42 deletions

View file

@ -2566,7 +2566,7 @@ U 2e2908c8 vert u_node 176 vec3 1 0
U 2e2908c8 vert u_morph 192 vec2 1 0
U 2e2908c8 vert u_grid 200 float 1 0
I 2e2908c8 a_xz 0 vec2
B 2e2908c8 frag 1 952
B 2e2908c8 frag 1 968
U 2e2908c8 frag u_cascade_vp 0 mat4 5 64
U 2e2908c8 frag u_cascade_split 320 float 5 16
U 2e2908c8 frag u_cascade_range 400 float 5 16
@ -2607,12 +2607,13 @@ U 2e2908c8 frag u_ortho_on 828 float 1 0
U 2e2908c8 frag u_carpet_on 832 float 1 0
U 2e2908c8 frag u_snow_line 836 float 1 0
U 2e2908c8 frag u_lake_level 840 float 1 0
U 2e2908c8 frag u_sea_level 844 float 1 0
U 2e2908c8 frag u_lake 848 vec4 1 0
U 2e2908c8 frag u_origin 864 vec2 1 0
U 2e2908c8 frag u_view 880 mat4 1 0
U 2e2908c8 frag u_far_split 944 float 1 0
U 2e2908c8 frag u_far_band 948 float 1 0
U 2e2908c8 frag u_wet 844 float 1 0
U 2e2908c8 frag u_sea_level 848 float 1 0
U 2e2908c8 frag u_lake 864 vec4 1 0
U 2e2908c8 frag u_origin 880 vec2 1 0
U 2e2908c8 frag u_view 896 mat4 1 0
U 2e2908c8 frag u_far_split 960 float 1 0
U 2e2908c8 frag u_far_band 964 float 1 0
T 2e2908c8 u_brdf 2
T 2e2908c8 u_carpet 3
T 2e2908c8 u_grass_a 4
@ -2641,7 +2642,7 @@ U 1f95f31b vert u_node 176 vec3 1 0
U 1f95f31b vert u_morph 192 vec2 1 0
U 1f95f31b vert u_grid 200 float 1 0
I 1f95f31b a_xz 0 vec2
B 1f95f31b frag 1 952
B 1f95f31b frag 1 968
U 1f95f31b frag u_cascade_vp 0 mat4 5 64
U 1f95f31b frag u_cascade_split 320 float 5 16
U 1f95f31b frag u_cascade_range 400 float 5 16
@ -2682,12 +2683,13 @@ U 1f95f31b frag u_ortho_on 828 float 1 0
U 1f95f31b frag u_carpet_on 832 float 1 0
U 1f95f31b frag u_snow_line 836 float 1 0
U 1f95f31b frag u_lake_level 840 float 1 0
U 1f95f31b frag u_sea_level 844 float 1 0
U 1f95f31b frag u_lake 848 vec4 1 0
U 1f95f31b frag u_origin 864 vec2 1 0
U 1f95f31b frag u_view 880 mat4 1 0
U 1f95f31b frag u_far_split 944 float 1 0
U 1f95f31b frag u_far_band 948 float 1 0
U 1f95f31b frag u_wet 844 float 1 0
U 1f95f31b frag u_sea_level 848 float 1 0
U 1f95f31b frag u_lake 864 vec4 1 0
U 1f95f31b frag u_origin 880 vec2 1 0
U 1f95f31b frag u_view 896 mat4 1 0
U 1f95f31b frag u_far_split 960 float 1 0
U 1f95f31b frag u_far_band 964 float 1 0
T 1f95f31b u_brdf 2
T 1f95f31b u_carpet 3
T 1f95f31b u_grass_a 4
@ -2716,7 +2718,7 @@ U f4382918 vert u_node 176 vec3 1 0
U f4382918 vert u_morph 192 vec2 1 0
U f4382918 vert u_grid 200 float 1 0
I f4382918 a_xz 0 vec2
B f4382918 frag 1 952
B f4382918 frag 1 968
U f4382918 frag u_cascade_vp 0 mat4 5 64
U f4382918 frag u_cascade_split 320 float 5 16
U f4382918 frag u_cascade_range 400 float 5 16
@ -2757,12 +2759,13 @@ U f4382918 frag u_ortho_on 828 float 1 0
U f4382918 frag u_carpet_on 832 float 1 0
U f4382918 frag u_snow_line 836 float 1 0
U f4382918 frag u_lake_level 840 float 1 0
U f4382918 frag u_sea_level 844 float 1 0
U f4382918 frag u_lake 848 vec4 1 0
U f4382918 frag u_origin 864 vec2 1 0
U f4382918 frag u_view 880 mat4 1 0
U f4382918 frag u_far_split 944 float 1 0
U f4382918 frag u_far_band 948 float 1 0
U f4382918 frag u_wet 844 float 1 0
U f4382918 frag u_sea_level 848 float 1 0
U f4382918 frag u_lake 864 vec4 1 0
U f4382918 frag u_origin 880 vec2 1 0
U f4382918 frag u_view 896 mat4 1 0
U f4382918 frag u_far_split 960 float 1 0
U f4382918 frag u_far_band 964 float 1 0
T f4382918 u_brdf 2
T f4382918 u_carpet 3
T f4382918 u_grass_a 4
@ -2791,7 +2794,7 @@ U f2952361 vert u_node 176 vec3 1 0
U f2952361 vert u_morph 192 vec2 1 0
U f2952361 vert u_grid 200 float 1 0
I f2952361 a_xz 0 vec2
B f2952361 frag 1 952
B f2952361 frag 1 968
U f2952361 frag u_cascade_vp 0 mat4 5 64
U f2952361 frag u_cascade_split 320 float 5 16
U f2952361 frag u_cascade_range 400 float 5 16
@ -2832,12 +2835,13 @@ U f2952361 frag u_ortho_on 828 float 1 0
U f2952361 frag u_carpet_on 832 float 1 0
U f2952361 frag u_snow_line 836 float 1 0
U f2952361 frag u_lake_level 840 float 1 0
U f2952361 frag u_sea_level 844 float 1 0
U f2952361 frag u_lake 848 vec4 1 0
U f2952361 frag u_origin 864 vec2 1 0
U f2952361 frag u_view 880 mat4 1 0
U f2952361 frag u_far_split 944 float 1 0
U f2952361 frag u_far_band 948 float 1 0
U f2952361 frag u_wet 844 float 1 0
U f2952361 frag u_sea_level 848 float 1 0
U f2952361 frag u_lake 864 vec4 1 0
U f2952361 frag u_origin 880 vec2 1 0
U f2952361 frag u_view 896 mat4 1 0
U f2952361 frag u_far_split 960 float 1 0
U f2952361 frag u_far_band 964 float 1 0
T f2952361 u_brdf 2
T f2952361 u_carpet 3
T f2952361 u_grass_a 4
@ -2866,7 +2870,7 @@ U a0f2dbac vert u_node 176 vec3 1 0
U a0f2dbac vert u_morph 192 vec2 1 0
U a0f2dbac vert u_grid 200 float 1 0
I a0f2dbac a_xz 0 vec2
B a0f2dbac frag 1 952
B a0f2dbac frag 1 968
U a0f2dbac frag u_cascade_vp 0 mat4 5 64
U a0f2dbac frag u_cascade_split 320 float 5 16
U a0f2dbac frag u_cascade_range 400 float 5 16
@ -2907,12 +2911,13 @@ U a0f2dbac frag u_ortho_on 828 float 1 0
U a0f2dbac frag u_carpet_on 832 float 1 0
U a0f2dbac frag u_snow_line 836 float 1 0
U a0f2dbac frag u_lake_level 840 float 1 0
U a0f2dbac frag u_sea_level 844 float 1 0
U a0f2dbac frag u_lake 848 vec4 1 0
U a0f2dbac frag u_origin 864 vec2 1 0
U a0f2dbac frag u_view 880 mat4 1 0
U a0f2dbac frag u_far_split 944 float 1 0
U a0f2dbac frag u_far_band 948 float 1 0
U a0f2dbac frag u_wet 844 float 1 0
U a0f2dbac frag u_sea_level 848 float 1 0
U a0f2dbac frag u_lake 864 vec4 1 0
U a0f2dbac frag u_origin 880 vec2 1 0
U a0f2dbac frag u_view 896 mat4 1 0
U a0f2dbac frag u_far_split 960 float 1 0
U a0f2dbac frag u_far_band 964 float 1 0
T a0f2dbac u_brdf 2
T a0f2dbac u_carpet 3
T a0f2dbac u_grass_a 4
@ -2941,7 +2946,7 @@ U 5e4589a1 vert u_node 176 vec3 1 0
U 5e4589a1 vert u_morph 192 vec2 1 0
U 5e4589a1 vert u_grid 200 float 1 0
I 5e4589a1 a_xz 0 vec2
B 5e4589a1 frag 1 952
B 5e4589a1 frag 1 968
U 5e4589a1 frag u_cascade_vp 0 mat4 5 64
U 5e4589a1 frag u_cascade_split 320 float 5 16
U 5e4589a1 frag u_cascade_range 400 float 5 16
@ -2982,12 +2987,13 @@ U 5e4589a1 frag u_ortho_on 828 float 1 0
U 5e4589a1 frag u_carpet_on 832 float 1 0
U 5e4589a1 frag u_snow_line 836 float 1 0
U 5e4589a1 frag u_lake_level 840 float 1 0
U 5e4589a1 frag u_sea_level 844 float 1 0
U 5e4589a1 frag u_lake 848 vec4 1 0
U 5e4589a1 frag u_origin 864 vec2 1 0
U 5e4589a1 frag u_view 880 mat4 1 0
U 5e4589a1 frag u_far_split 944 float 1 0
U 5e4589a1 frag u_far_band 948 float 1 0
U 5e4589a1 frag u_wet 844 float 1 0
U 5e4589a1 frag u_sea_level 848 float 1 0
U 5e4589a1 frag u_lake 864 vec4 1 0
U 5e4589a1 frag u_origin 880 vec2 1 0
U 5e4589a1 frag u_view 896 mat4 1 0
U 5e4589a1 frag u_far_split 960 float 1 0
U 5e4589a1 frag u_far_band 964 float 1 0
T 5e4589a1 u_brdf 2
T 5e4589a1 u_carpet 3
T 5e4589a1 u_grass_a 4