SKAI radar bench
Each page puts the radar the iOS app ships today next to one change, on the same map, with the same timeline. Everything in each pane can be adjusted live.
Rendering
Same Aeris tiles, rendered the way the app does versus with native tiles to zoom 12, 2 hours of 5-minute frames, preloading, and a shorter crossfade. Zoom into a city and press play.
vs proposed rendering
Forecast source
Identical settings except the future layer. The app uses Aeris fradar, a coarse blend. fradar-hrrr is the 3 km HRRR model on the same key. Step past "now" to compare.
vs fradar-hrrr
Aeris vs NOAA
The app's Aeris radar next to tiles rendered by our own server from free NOAA data: MRMS 1 km composite reflectivity every 2 minutes for observed, HRRR for forecast. No per-tile cost, no secret in the client.
vs NOAA MRMS + HRRR
Native 2-minute frames
The cheapest smoothness: more real frames. MRMS publishes every 2 minutes, Aeris every 5 to 6. Both cards report bytes downloaded, so the cost of the denser loop is on screen.
vs NOAA at 2 min
Tile encoding
Identical frames, only the image format differs: 32-bit colour PNG versus lossy colour WebP. The cards also offer 8-bit palette PNG. Grey data tiles for the GPU pages are always WebP.
vs colour WebP
Motion-compensated interpolation
Optical flow between consecutive frames, then in-between frames synthesised on the server by warping both neighbours. Cells move instead of fading. Every synthesised frame is another tile download.
vs + 1-min interpolated
Client-side shader interpolation
Instead of downloading synthesised frames, the device fetches two observed frames plus a small motion tile and a GPU shader warps between them continuously. Smoothest playback and the least data.
vs GPU warp
Nowcast extrapolation
The same motion field run forward: the latest observed frame advected up to 2 hours ahead in 5-minute steps, bridging into HRRR. Replaces the app's jump from "now" to a blurry hourly forecast.
vs 2 h nowcast then HRRR
Everything on
Each tile's whole loop as one H.264 clip decoded on the device, GPU warp between frames, an index that skips empty tiles, 2-minute frames only for the last 30 minutes, a lower zoom while playing, then an hour of nowcast carried by the observed motion and 18 h of HRRR. Compare the byte counts.
vs all optimizations
MapsGL
The Xweather MapsGL SDK, which the app shows subscribers as Advanced Radar, next to everything on. Same moment on both maps; bytes on both cards.
vs all optimizations
Looks
The optimized pipeline with ten ways to paint the same radar, all in the shader: palettes with their own transparency, banded contours, outlines, glow, pastel. Zero extra bytes.
vs a chosen look
Temperature
The first non-radar layer on the same pipeline: HRRR 2 m temperature as one-byte tiles coloured on the GPU, next to Aeris forecast temperature tiles drawn the app's way.
vs HRRR 2 m temperature
Wind
HRRR 10 m wind as one-byte speed tiles coloured on the GPU with particles carried along the wind, next to Aeris forecast wind-speed tiles drawn the app's way.
vs HRRR 10 m wind
Clouds
HRRR total cloud cover forecast as one-byte tiles drawn on the GPU, next to Aeris forecast cloud-cover tiles drawn the app's way.
vs HRRR cloud cover
Satellite
GOES-19 infrared every 10 minutes with motion fields, so the clouds glide between scans, next to the five Aeris satellite frames the app shows as Clouds Movement.
vs GOES-19 infrared
Precip type
MRMS surface precipitation type (rain, snow, hail, convective, tropical) as one-byte tiles from 150 KB files, next to the app's radar whose palette folds type into colour.
vs MRMS PrecipFlag
Alerts
NWS active alerts as vector shapes from the free API, zones resolved and cached on our server, next to the Aeris alerts tiles the app's Weather alerts toggle draws.
vs NWS vector alerts