Weather system: rain, snow, storms, fog and wind (local + region opt-in) #783
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#783
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A viewer-side weather system: rain, snow, storms, fog and wind that react to the environment, rendered GPU-driven, our own design. Closely related to the volumetrics epic (#722): volumetric fog (#718), the volumetric sky cloud layer (#719) and cloud platforms (#720) -- weather should drive those rather than duplicate them.
Weather state
Rendering (GPU-driven, no per-drop CPU work)
Constraints
Milestones
M1 (done, in testing): local weather state + transitions, GPU rain/snow particles, top-down roof occlusion map, wet surfaces (darkening, gloss, puddles, ripples), Weather floater + toolbar button + World > Weather, drives volumetric fog density.
M1.5 (in progress):
M2: region / parcel opt-in source + EEP-derived weather, cloud layer coverage from weather, GPU splashes, lightning + thunder, puddle reflections, RT sky-visibility (one upward ray per pixel, denoised) for the roof test on RT hardware, precipitation in probes/mirrors.
M3: real snow accumulation (volumetric).
M4: run-off -- water streaming off covered surfaces
Rain that lands on roofs, awnings, tables and other covers should run off and fall from their edges, instead of simply vanishing.
M2 additions (owner, 2026-10-19)
Wind-tilted rain coverage map. Capture the roof / occlusion map along the precipitation direction instead of straight down: d = normalize(horizontal wind velocity + (0, 0, -fall speed)) (rain ~9 m/s, snow ~1-1.5 m/s).
Wind variation (gusts). New settings:
WeatherWindVariation(0..1): how far the wind speed swings around the set speed (e.g. 0.5 = between 50% and 150%); the direction can wander slightly with it.WeatherWindGustiness(0..1): how fast it picks up and dies down, from slow swells over tens of seconds to sharp gusts that rise and fall within a second or two.M2 addition: persistent snow + snow that belongs to moving objects (owner, 2026-10-19)
Observed in M1.5: snow on a physical object shifts when the object moves, and the object casts a moving snow-free "shadow" on the ground. Cause: the coating is computed fresh every frame as global cover x current sky-openness, with world-space noise.
M3 addition: snow on avatars (owner, 2026-10-19)
Today avatars only collect snow while sitting -- a side effect: rigged draws are excluded from the moving-object snow, fall through to the static grid lookup, and only a sitting avatar becomes part of the static roof map (world-anchored snow that doesn't follow the avatar).
Follow-up (after the M3 edge/seam fixes): outer snow-depth ring
M3's real snow (depth field + mesh) only covers the near cascade's 32 m grid: a square about +-16 m around a 4 m-snapped centre, with stride bands of 6 / 12 / 24 cm inside 10 m / 20 m / the edge. Beyond it, only the flat coating shows.
RenderVKWeatherSnowOuterRing(Boolean) and its extent.Follow-up: snow contact for every limb, not just feet (owner, 2026-10-19)
M3 stamps footprints from the ankle / foot / toe joints only (one 8x8 workgroup per foot, pressed to the sole, >= 20% left).