Local weather starves avatar weather (snow capped by slow ground depth, weak rain) and mesh snow; parcel weather works #1130

Closed
opened 2026-10-27 05:46:08 +00:00 by sky_line · 1 comment
Owner

Weather on avatars (#901 rest-pose accumulation + the avatar shelter): the own avatar shows no visible wetness or snow build-up, worn umbrella included, in rain, a blizzard and snow -- and the body is treated as fully sheltered even with the umbrella tilted off it. Pre-existing: the same readouts on dev 3460293f4a (before #1124) and f3c24ffab5 (with #1124), so #1124 did not cause it.

Owner test, 2026-10-27 (RTX 5090, desktop): own avatar on a balcony, worn umbrella (rigid attachment), 57 worn rigid attachments, 6 avatar grids live. Rain -> tilt the umbrella off the body: no wetness appears on the body; the umbrella canopy shows no wetness either. Blizzard / snow: no snow builds up on the avatar or umbrella.

Log readouts (VKWeather, every 10 s):

  • Shelter, own avatar: exposure top 1 body 0 in every reading, rain and snow, umbrella over or tilted away. wetness top 1 body 0.12 -> 0.08 -> 0.04 -> 0 in rain (the body wetness decays to 0 while it should be getting wet).
  • Accumulation, own grid (32x32x64): small deposits do happen -- max snow 1.00 -> 2.00 cm in the blizzard (05:11-05:12 UTC), mean wetness rising to 0.16 in rain (05:16 UTC) -- yet nothing shows on the avatar or the umbrella.
  • In snow after that (and on the pre-#1124 build): max snow 0.00 cm, mean wetness 0.00.

So, three questions:

  1. Why is body exposure pinned at 0 (fully covered) whatever the umbrella does? (Own attachments counted as cover? the umbrella's column covering the body regardless of tilt? the aggregate taking the most-covered sample?)
  2. Why do grid deposits (up to 2 cm snow, 0.16 wetness) not show on the avatar / umbrella? (FS lookup weatherAvatarAccum, occupancy threshold kAcOccMin + fallback, slot/grid mapping for worn rigid attachments.)
  3. Deposit rates look very low for the conditions (blizzard: 2 cm in ~2 min max).

Start from data, not theory: dump the own avatar's shelter map + accumulation grid (and the per-draw exposure) at a fixed pose. Separate ticket to come for the slow ground snow build-up (even at 360 cm/h).

Weather on avatars (#901 rest-pose accumulation + the avatar shelter): the own avatar shows no visible wetness or snow build-up, worn umbrella included, in rain, a blizzard and snow -- and the body is treated as fully sheltered even with the umbrella tilted off it. **Pre-existing:** the same readouts on dev `3460293f4a` (before #1124) and `f3c24ffab5` (with #1124), so #1124 did not cause it. **Owner test, 2026-10-27 (RTX 5090, desktop):** own avatar on a balcony, worn umbrella (rigid attachment), 57 worn rigid attachments, 6 avatar grids live. Rain -> tilt the umbrella off the body: no wetness appears on the body; the umbrella canopy shows no wetness either. Blizzard / snow: no snow builds up on the avatar or umbrella. **Log readouts (VKWeather, every 10 s):** - Shelter, own avatar: `exposure top 1 body 0` in every reading, rain and snow, umbrella over or tilted away. `wetness top 1 body 0.12 -> 0.08 -> 0.04 -> 0` in rain (the body wetness decays to 0 while it should be getting wet). - Accumulation, own grid (32x32x64): small deposits do happen -- `max snow 1.00 -> 2.00 cm` in the blizzard (05:11-05:12 UTC), `mean wetness` rising to 0.16 in rain (05:16 UTC) -- yet nothing shows on the avatar or the umbrella. - In snow after that (and on the pre-#1124 build): `max snow 0.00 cm, mean wetness 0.00`. **So, three questions:** 1. Why is body exposure pinned at 0 (fully covered) whatever the umbrella does? (Own attachments counted as cover? the umbrella's column covering the body regardless of tilt? the aggregate taking the most-covered sample?) 2. Why do grid deposits (up to 2 cm snow, 0.16 wetness) not show on the avatar / umbrella? (FS lookup weatherAvatarAccum, occupancy threshold kAcOccMin + fallback, slot/grid mapping for worn rigid attachments.) 3. Deposit rates look very low for the conditions (blizzard: 2 cm in ~2 min max). Start from data, not theory: dump the own avatar's shelter map + accumulation grid (and the per-draw exposure) at a fixed pose. Separate ticket to come for the slow ground snow build-up (even at 360 cm/h).
sky_line added this to the Slipstream project 2026-10-27 05:46:08 +00:00
Author
Owner

Narrowed down (owner test on the pre-#1124 build, 2026-10-27): switching from LOCAL weather to PARCEL weather makes avatar weather work:

  • Parcel snow (stamped depth 0.2 m): the own grid filled 0 -> 0.59 -> 1.32 -> 2.00 cm in ~30 s and the snow shows on the avatar. (2.00 cm is the designed full coat: kAcSnowFull = 0.02, clean_weather_accum.glsl:62 -- not a bug.)
  • Parcel rain: the umbrella canopy shows wetness, and the body gets wet with the umbrella tilted off. So the logged exposure ... body 0 is misleading (not the real behaviour) -- low priority.
  • The canopy wetness looked splotchy on this build (no #1124), i.e. #1124's target bug is real; re-check the same scene on a #1124 build to verify that fix.

So the bug is: local weather starves the avatar (and mesh) paths.

  1. Avatar snow fills only up to the WORLD's snow depth at the avatar (clean_weather_accum.comp:690: min(world depth, kAcSnowFull)). Local-weather ground snow builds very slowly (even at 360 cm/h), so the avatar stays near 0. Design question too: should fresh snowfall on an avatar wait for the ground at all? (The coupling exists so a teleport out of weather doesn't leave a coat.)
  2. Avatar wetness rate = st.rain x exposure / soak time (llcleanweathervk_shelter.cpp:787). Local rain only crept the grid to ~0.16 -- check what st.rain local weather hands the avatar path vs parcel weather.
  3. Owner, seen before: local-weather snow never builds MESH snow while the parcel weather has snow set -- likely the parcel's depth / rate / catch-up overriding or blocking the local values.

Retitled to match.

**Narrowed down (owner test on the pre-#1124 build, 2026-10-27):** switching from LOCAL weather to PARCEL weather makes avatar weather work: - Parcel snow (stamped depth 0.2 m): the own grid filled 0 -> 0.59 -> 1.32 -> 2.00 cm in ~30 s and the snow shows on the avatar. (2.00 cm is the designed full coat: `kAcSnowFull = 0.02`, clean_weather_accum.glsl:62 -- not a bug.) - Parcel rain: the umbrella canopy shows wetness, and the body gets wet with the umbrella tilted off. So the logged `exposure ... body 0` is misleading (not the real behaviour) -- low priority. - The canopy wetness looked splotchy on this build (no #1124), i.e. #1124's target bug is real; re-check the same scene on a #1124 build to verify that fix. **So the bug is: local weather starves the avatar (and mesh) paths.** 1. Avatar snow fills only up to the WORLD's snow depth at the avatar (clean_weather_accum.comp:690: `min(world depth, kAcSnowFull)`). Local-weather ground snow builds very slowly (even at 360 cm/h), so the avatar stays near 0. Design question too: should fresh snowfall on an avatar wait for the ground at all? (The coupling exists so a teleport out of weather doesn't leave a coat.) 2. Avatar wetness rate = `st.rain` x exposure / soak time (llcleanweathervk_shelter.cpp:787). Local rain only crept the grid to ~0.16 -- check what `st.rain` local weather hands the avatar path vs parcel weather. 3. Owner, seen before: local-weather snow never builds MESH snow while the parcel weather has snow set -- likely the parcel's depth / rate / catch-up overriding or blocking the local values. Retitled to match.
sky_line changed title from Avatar weather: no visible wetness / snow on the own avatar or worn umbrella; body exposure stuck at 0 (pre-existing) to Local weather starves avatar weather (snow capped by slow ground depth, weak rain) and mesh snow; parcel weather works 2026-10-27 05:55:15 +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#1130
No description provided.