#1037 Weather: no snow on furniture under a roof that loaded late; buried snow melts #1161

Manually merged
sky_line merged 1 commit from TheSlowly/Slipstream:weather-indoor-snow-1037 into main 2026-10-27 20:25:35 +00:00
Collaborator

Fixes #1037 (snow on furniture inside a roofed cabin, varying with load order).

Cause: if furniture reached the weather roof map before its roof, it got the open-sky coat. When the roof arrived, the snow pass read the rising top as "something set down on lying snow" and kept the coat as buried cover, which never melted and showed indoors.

Change:

  • New or re-shaped static geometry inside the near map holds burial off until 3 more near maps are published, so a late roof buries nothing. A mover settling (a table set down on the lawn) still buries as before.
  • Buried cover melts over about 90 s.
  • A map area where static casters changed redraws after 10 recordings instead of the 30-frame interval.

Reviewed against the cold-load path; not yet reproduced in-world with a cold cache.

Fixes #1037 (snow on furniture inside a roofed cabin, varying with load order). Cause: if furniture reached the weather roof map before its roof, it got the open-sky coat. When the roof arrived, the snow pass read the rising top as "something set down on lying snow" and kept the coat as buried cover, which never melted and showed indoors. Change: - New or re-shaped static geometry inside the near map holds burial off until 3 more near maps are published, so a late roof buries nothing. A mover settling (a table set down on the lawn) still buries as before. - Buried cover melts over about 90 s. - A map area where static casters changed redraws after 10 recordings instead of the 30-frame interval. Reviewed against the cold-load path; not yet reproduced in-world with a cold cache.
The cover kernel (clean_weather_snow.comp) treats a column top that rises as something set
down over lying snow: the old top's cover R moves to the buried cover G, and the lit FS shows
G on every surface below the top at full strength (gate 1, no sky term), with no decay. A
texel entering the grid gets the full global cover at once, so furniture that loaded before
the cabin's roof was "open sky" for a map render or two; when the roof reached the near map,
its coat was buried and stayed indoors until the global cover melted. Load order decided it.

- Bury hold: prepare() reads the ingest's change spheres (gVKChangedSpheres, collected while
  the weather runs). New / released / re-shaped static geometry (tags 0/3/4/6, or an overflow)
  inside the near map's box sets WX_F_NOBURY until 3 more near maps are published. While it
  holds, a rising top buries nothing (G = 0). A mover settling (tag 5) does not hold, so a
  table set down on the lawn still keeps the lawn's snow under it.
- Buried melt: G melts under its cover at 1/90 per second (a full coat in ~90 s, the same
  rate as #903's kAvCoverMelt), so a missed case clears on its own.
- Occlusion refresh: a cascade whose box a change sphere touches is due 10 recordings after
  its last render instead of 30. It is still at most one map per recording, and the map's
  raster and format are unchanged.
Owner

Merged to main (cherry-picked) as 2579be1838, tested in-world by the owner together with the other open PRs. Thank you!

Merged to main (cherry-picked) as 2579be1838, tested in-world by the owner together with the other open PRs. Thank you!
sky_line manually merged commit 2579be1838 into main 2026-10-27 20:25:35 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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!1161
No description provided.