Variable SEASON_VERT_BODYConst
SEASON_VERT_BODY: "\n if (uSeasonEnabled > 0.5) {\n float _cx = mod(cellIndex, uClimateSize.x);\n float _cy = floor(cellIndex / uClimateSize.x);\n vec4 _cd = texture2D(uClimateData, (vec2(_cx, _cy) + 0.5) / uClimateSize);\n vSnow = _cd.b;\n // uFreezePoint < 0 marks a liquid that never freezes.\n vIce = uFreezePoint < 0.0\n ? 0.0\n : smoothstep(uFreezePoint, uFreezePoint - max(uFreezeBand, 1e-4), _cd.a);\n } else {\n vSnow = 0.0;\n vIce = 0.0;\n }\n" = ...
Resolves the cell's snow depth and — from this liquid's own freeze point — how far it has frozen.
Ice is derived here rather than stored per cell because every liquid freezes at a different temperature: water skins over long before acid does, and lava never does. One shared "is frozen" byte could only ever answer for one of them, so the texture carries the season-adjusted temperature and each material reads its own answer out of it.