Weather: fires and other hot emissive things melt the snow around them (emissive objects, animated fire textures, glowing particles) #949

Open
opened 2026-10-22 23:51:06 +00:00 by sky_line · 0 comments
Owner

Fires, braziers, lava, glowing particles and other hot-looking things should keep the snow around them melted, so a campfire sits in a melted circle of wet ground instead of a pile of snow.

Idea

Treat bright, warm-coloured emissive surfaces and particles as heat sources for the weather snow simulation (#783):

  • Emissive objects: we already build a per-frame list of emissive instances for ray-traced lighting (pass 15's emissive records: world centre, bounding radius, radiance, area). Feed the same list into the snow update.
  • Animated textures: objects with an animated texture (texture animation / flipbook fire) and emissive or full-bright / glow get a heat weight from their emissive colour.
  • Particles: GPU particles with additive / emissive / glow blending (the volumetric-particle classifier from #722 already recognises these) contribute heat at their position, weighted by count, size and brightness.
  • Warm colours only: weight heat by colour temperature (red / orange / yellow high, blue / white-cold low), so neon signs or blue lights don't melt snow.

Melting

  • Each heat source melts snow within a radius that grows with its brightness and size, falling off with distance; snow depth in the cover grids decreases over time (and refills when the source goes away and it keeps snowing).
  • Melt water wets the ground (the existing wetness / run-off, #783 M4).
  • Snow on avatars near a fire melts too (#901 avatar accumulation), so standing by the fire dries and clears you.

Notes

  • Everything stays in the existing GPU snow passes; the heat-source list is a small fixed-size buffer rebuilt per frame (budgeted, like the emissive records).
  • Settings to tune or turn it off (on by default once it looks right).
  • Scripted fireplaces that are only a mesh with a normal texture won't count; that's fine.
Fires, braziers, lava, glowing particles and other hot-looking things should keep the snow around them melted, so a campfire sits in a melted circle of wet ground instead of a pile of snow. ## Idea Treat bright, warm-coloured **emissive surfaces** and **particles** as heat sources for the weather snow simulation (#783): - **Emissive objects:** we already build a per-frame list of emissive instances for ray-traced lighting (pass 15's emissive records: world centre, bounding radius, radiance, area). Feed the same list into the snow update. - **Animated textures:** objects with an animated texture (texture animation / flipbook fire) and emissive or full-bright / glow get a heat weight from their emissive colour. - **Particles:** GPU particles with additive / emissive / glow blending (the volumetric-particle classifier from #722 already recognises these) contribute heat at their position, weighted by count, size and brightness. - **Warm colours only:** weight heat by colour temperature (red / orange / yellow high, blue / white-cold low), so neon signs or blue lights don't melt snow. ## Melting - Each heat source melts snow within a radius that grows with its brightness and size, falling off with distance; snow depth in the cover grids decreases over time (and refills when the source goes away and it keeps snowing). - Melt water wets the ground (the existing wetness / run-off, #783 M4). - Snow on avatars near a fire melts too (#901 avatar accumulation), so standing by the fire dries and clears you. ## Notes - Everything stays in the existing GPU snow passes; the heat-source list is a small fixed-size buffer rebuilt per frame (budgeted, like the emissive records). - Settings to tune or turn it off (on by default once it looks right). - Scripted fireplaces that are only a mesh with a normal texture won't count; that's fine.
sky_line added this to the Slipstream project 2026-10-22 23:51:06 +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#949
No description provided.