mirror of
https://github.com/lynchaos/ashvale-station.git
synced 2026-09-12 12:47:49 +00:00
The old display drew static glyphs, held them, and cut to the next, which looks like a microwave clock. This is a continuous 24 fps renderer. Three things do most of the work. Gamma, because LED duty cycle is linear and perception is not, so ungamma'd gradients band and dim colours vanish. Sub-pixel rendering, so a dot at x=3.4 lights two pixels and motion glides rather than steps. Crossfades, so scenes dissolve over 1.3 s and nothing ever cuts. Added temporal dithering after finding the framebuffer is RGB565: 32 levels of red and blue, which after gamma leaves very few steps exactly where an aurora and a star field live. A Bayer pattern rotated each frame alternates between adjacent hardware levels, measured landing on 1.75, 4.31 and 8.06 where the panel can only display integers. The panel is also dimmed by measured lux on a log curve, so at night it is a glow rather than a searchlight. Five scenes, each a reading rather than decoration. Aurora: hue is temperature, curtain drift direction is pressure tendency, contrast is humidity. Solar sky: sun at its true azimuth and elevation over a dawn/day/dusk gradient, becoming a twinkling star field and moon after sunset. Precipitation: drop count from rain probability, snow below 1.5 C with sideways sway, lightning with exponential afterglow when stormy. Forecast ribbon: six horizons scrolling, height is the predicted delta, pale caps are the conformal half-width so uncertainty is visible. Barometer: a breathing ring whose period is the tendency. Profiled because it shares a 512 MB board with the station. The first ribbon cost 330 us a frame, about 16% of a core scaled to a Zero 2 W; vectorising it into fields rather than 84 sub-pixel splats brought the worst scene to 7.6%. Verified 23.6 fps sustained with zero malformed frames.