매끄러운 레이더 루프는 완성된 영상이 아니라 숫자에서 시작합니다. Forecast Bar는 전국 스캔을 타일, 검증, 캐싱, 기기 내 렌더링을 거쳐 전달하고, 스캔 사이의 공백을 처리해 폭풍이 화면 위에서 매끄럽게 움직이도록 합니다.
전국 스캔 하나, 약 1,600만 개의 값
NOAA는 2분마다 레이더 관측을 전국 스캔으로 병합합니다. 이 영상에 사용된 스캔은 6,100 × 2,700개 지점, 즉 16,470,000개의 값으로 이루어집니다. Forecast Bar 서버는 20초마다 새 스캔을 확인합니다.
이들은 서로 다른 시계입니다. 20초마다 확인한다고 20초마다 새 관측이 생기는 것은 아닙니다. 마찬가지로 화면이 초당 여러 번 재생된다고 그만큼 새로운 레이더 스캔을 받는 것도 아닙니다.
값을 보내고 색은 나중에 입히기
레이더는 지점당 1바이트의 숫자로 전달됩니다. 휴대폰이 지도를 그릴 때 색을 입힙니다. 이렇게 하면 기본 레이더 값과 사용자가 보는 색상표가 분리됩니다.
개별 레이더는 동시에 스캔하지 않습니다. 늦은 레이더의 데이터는 다음 실제 스캔을 향해 부드럽게 옮겨집니다. 영상에서는 이를 또 다른 관측을 지어내는 것이 아니라 실제 스캔 사이를 메우는 작업으로 설명합니다.
검증된 타일로 완전한 프레임 만들기
각 프레임은 타일로 잘립니다. 타일은 이웃 타일에서 1픽셀 테두리를 빌려 표시되는 조각이 이음새 없이 맞닿게 합니다. 모든 타일에는 SHA-256 지문도 붙습니다.
프레임은 모든 타일이 검증을 통과해야 공개됩니다. 공개된 프레임은 절대 바뀌지 않습니다. 화면에 필요한 타일은 불완전한 조각이 차례로 나타나는 대신 한 번의 요청으로 하나의 파일에 담겨 함께 도착합니다.
변경되지 않는 프레임을 가까이 두기
공개된 프레임은 바뀌지 않으므로 엣지 캐시가 1년 동안 보관할 수 있습니다. 캐시된 오래된 프레임은 여전히 그 프레임이며, 최신 스캔을 찾는 일은 별도의 작업입니다.
기기에서는 타일이 GPU 메모리에 쌓이고 그리는 시점에 픽셀별로 색이 입혀집니다. 영상에서 측정한 자동 재생 결과는 약 1.5초였습니다. 이는 루프를 재생할 준비가 되는 시간이며, 레이더 관측의 경과 시간이나 보편적인 전달 시간이 아닙니다.
단순한 페이드 대신 스캔 사이에서 폭풍을 이동시키기
폭풍은 관측 사이의 몇 분 동안에도 계속 움직입니다. 단순한 크로스페이드는 이전 폭풍이 사라지는 동안 새 폭풍이 나타나게 하여 희미한 복사본 두 개를 만듭니다.
대신 GPU는 움직임 필드를 추정해 프레임 사이에서 에코를 경로를 따라 이동시킵니다. 결과는 화면의 다음 재생 시점에 갱신될 수 있으며, 지원되는 디스플레이에서 최대 120Hz입니다. 이는 디스플레이 상한이며 모든 기기에 대한 약속이 아니고, 관측 빈도를 높이지도 않습니다.
핵심 정리
다음에는 이렇게 확인하십시오:
- 스캔 주기, 서버 확인, 화면 재생률을 구분합니다.
- 애니메이션이 연속적으로 보여도 타임스탬프를 확인합니다.
- 매끄러운 움직임은 새로운 레이더 관측이 아니라 스캔 사이의 렌더링입니다.