Treat weather as a coupled event, particle, and surface-response system. Do not add rain or snow particles that are visually disconnected from the ground.
This skill contains exemplary examples and assets beyond descriptive guidance, they're worth studying, referencing, or even copying. Use them sufficiently when relevant and do NOT blindly skip them.
weather envelope
-> falling precipitation volume
-> world/object surface mask
-> displaced or optical surface response
-> impact residue and splashes
-> shared lighting/post presentation
Read references/precipitation-surface-systems.md for snow accumulation, object capping, wrapped precipitation volumes, wet puddle masks, procedural ripple normals, splash placement, debug outputs, and licensing boundaries.
Read the snow accumulation implementation for camera-wrapped snowfall, shared wind/time uniforms, world-space snow masks, single-source snow height and normals, model snow capping, and optional ice surface composition.
Read the wet puddle rain implementation for rain-progress wetness, asphalt puddle masks, procedural ripple normals, instanced rain streaks, upward-surface splash sampling, and flipbook splashes. This example includes GPL-licensed source material; preserve its license boundary when copying or publishing it.
Use $threejs-water-optics for bounded pool simulation, caustics, Fresnel,
refraction, and Beer-Lambert water volumes. Use $threejs-procedural-vfx for
general sparks, plasma, trails, and non-weather particles. Use
$threejs-temporal-surfaces for screen-space touch history or frost clearing.
This skill owns precipitation events and the surfaces they visibly alter.