mirror of
https://github.com/lynchaos/ashvale-station.git
synced 2026-09-12 12:47:49 +00:00
Three references were requested as 8x8 animations. Copying their frames does not work and I measured it rather than asserting it: at 8x8 the sun is a 2025:1 area reduction and its rays vanish, the umbrella loses canopy and handle, and the snowflake averages into the background. Downsampled they move 0.0037, 0.0175 and 0.0027 per frame against 0.0177 for the aurora already on the panel, so frame-copying would have been a downgrade. The sun source is only 3 frames and the umbrella 4. These are hand-drawn at 8x8 instead, taking the palette and subject from the references, which also keeps three artists' frames out of an Apache-2.0 repo. Transitions are now the data. _pick_glyph reads rain probability, Kalman temperature, solar elevation and cloud index and selects sun, umbrella or snowflake; a change preempts whatever is on screen and crossfades immediately, so the panel dissolves because the weather moved, not because a timer expired. Between changes the informational scenes still rotate. Verified switching live: sunny -> sun, rain forecast -> umbrella, temperature to 0.4 C -> snowflake, clearing -> sun. Getting them to read took two failed passes, both recorded in comments. First version blew the canopy to white and fused the snowflake into a blob, because seventeen arc samples over ten pixels overlap 1.7 deep. Dropping alpha made them muddy instead. The fix was sampling density, not brightness. Profiled again since these share the board: the glyphs first cost 11 to 13% of a core. Making plot() write scalar components rather than a 3-vector slice, and expressing the sun's eight-fold rays as one angular field instead of 56 splats, took the sun from 275 to 43 us and the worst scene overall from 13.2% to 8.0%.