Weather: precipitation intensity in real units (rain mm/h, snow cm/h) driving density + accumulation -- blizzards and downpours #954

Open
opened 2026-10-23 02:28:09 +00:00 by sky_line · 0 comments
Owner

Goal

Precipitation should be able to go from a light drizzle / flurry up to a real blizzard and a dense downpour, and the lying snow / wetness should build at a rate that tracks how hard it is actually falling.

Today

  • WeatherIntensity (0..1) drives particle density, wetting speed and extra fog.
  • Snow depth build-up is separate: WeatherSnowMaxDepth x the intensity, or the parcel tag's rate= / WeatherParcelSnowRate (m/h), which replaces the intensity-based build-up. So the falling snow and the accumulation are not tied to one physical rate, and the top of the range does not look or feel like a blizzard or a downpour.

Wanted

  1. One physical rate per precipitation type, tracked over time:
    • rain in mm/h (roughly: light < 2.5, moderate 2.5-7.6, heavy 7.6-50, violent / cloudburst 50-100+);
    • snow in cm/h of snowfall (light < 0.5, moderate 0.5-2.5, heavy 2.5-8, blizzard-grade 8+ with wind).
    • Intensity can vary over time (bands, gusts, a downpour passing over) instead of being one flat value.
  2. Accumulation follows the rate: snow depth grows by the snowfall rate (with compaction / settling), wetness and puddling by the rain rate. The parcel rate= keeps working as an explicit override for shared snow, and the shared tag should be able to carry the intensity too so everyone on the parcel sees the same storm.
  3. The look scales to the top of the range:
    • Rain: particle count, drop size distribution (bigger drops in heavy rain), streak length, splash / ripple density, the sheet / curtain look of distant heavy rain, visibility loss.
    • Snow: flake density, flake size / clumping, wind-driven horizontal snow and swirl, near-whiteout visibility in a blizzard, blowing snow off the surface at high wind.
    • Within GPU budget: distant precipitation as a volumetric / screen-space layer rather than more particles; respect the weather VRAM tier (RenderVKWeatherVramTier) and the Weather quality preference.
  4. Audio follows the rate (rain loudness / texture, wind in a blizzard), via the existing weather audio.
  5. Controls: the weather floater gets the rate (or a preset ladder: drizzle / rain / heavy / downpour; flurries / snow / heavy / blizzard) next to or instead of the bare 0..1 intensity; old settings and existing parcel tags keep working.

Test

  • Each step of the ladder for rain and snow: density, visibility and sound scale sensibly; blizzard gives near-whiteout with horizontal snow; downpour gives dense curtains + heavy splashing.
  • Snow at a given cm/h for 10 minutes: depth grows by about the expected amount (minus settling); a rate change mid-storm changes the build-up.
  • Two viewers on one parcel with the shared tag: same storm and depth.
  • GPU timers at the top of the range vs. today's max intensity on a small card (small weather tier).
## Goal Precipitation should be able to go from a light drizzle / flurry up to a **real blizzard** and a **dense downpour**, and the lying snow / wetness should build at a rate that tracks how hard it is actually falling. ## Today - `WeatherIntensity` (0..1) drives particle density, wetting speed and extra fog. - Snow depth build-up is separate: `WeatherSnowMaxDepth` x the intensity, or the parcel tag's `rate=` / `WeatherParcelSnowRate` (m/h), which replaces the intensity-based build-up. So the falling snow and the accumulation are not tied to one physical rate, and the top of the range does not look or feel like a blizzard or a downpour. ## Wanted 1. **One physical rate per precipitation type**, tracked over time: - rain in **mm/h** (roughly: light < 2.5, moderate 2.5-7.6, heavy 7.6-50, violent / cloudburst 50-100+); - snow in **cm/h of snowfall** (light < 0.5, moderate 0.5-2.5, heavy 2.5-8, blizzard-grade 8+ with wind). - Intensity can vary over time (bands, gusts, a downpour passing over) instead of being one flat value. 2. **Accumulation follows the rate**: snow depth grows by the snowfall rate (with compaction / settling), wetness and puddling by the rain rate. The parcel `rate=` keeps working as an explicit override for shared snow, and the shared tag should be able to carry the intensity too so everyone on the parcel sees the same storm. 3. **The look scales to the top of the range:** - Rain: particle count, drop size distribution (bigger drops in heavy rain), streak length, splash / ripple density, the sheet / curtain look of distant heavy rain, visibility loss. - Snow: flake density, flake size / clumping, wind-driven horizontal snow and swirl, near-whiteout visibility in a blizzard, blowing snow off the surface at high wind. - Within GPU budget: distant precipitation as a volumetric / screen-space layer rather than more particles; respect the weather VRAM tier (`RenderVKWeatherVramTier`) and the Weather quality preference. 4. **Audio follows the rate** (rain loudness / texture, wind in a blizzard), via the existing weather audio. 5. **Controls:** the weather floater gets the rate (or a preset ladder: drizzle / rain / heavy / downpour; flurries / snow / heavy / blizzard) next to or instead of the bare 0..1 intensity; old settings and existing parcel tags keep working. ## Test - Each step of the ladder for rain and snow: density, visibility and sound scale sensibly; blizzard gives near-whiteout with horizontal snow; downpour gives dense curtains + heavy splashing. - Snow at a given cm/h for 10 minutes: depth grows by about the expected amount (minus settling); a rate change mid-storm changes the build-up. - Two viewers on one parcel with the shared tag: same storm and depth. - GPU timers at the top of the range vs. today's max intensity on a small card (small weather tier).
sky_line added this to the Slipstream project 2026-10-23 02:28:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#954
No description provided.