Nexrad 3D is a web-native platform that provides a real-time, three-dimensional volume visualization of weather radar data. The platform captures raw NEXRAD Level II archive streams, processes them, and uses hardware-accelerated Volume Ray Marching within the browser to generate detailed storm cell structures.
The software stack is designed around distributed microservices using Node.js, Next.js, and WebGL technologies:
Message 31 sweeps from Level II files, alongside ODIM H5 formats.Weather radars perform rapid sweeps of the atmosphere at various elevations. These sweeps are packaged into a "Volume", and published by agencies (like NOAA) in real-time.
The ingest-worker discovers these new Volume deployments, downloads the raw binaries, and runs them through our portable parser. The parser unpacks radial moments—such as Reflectivity (REF) and Velocity (VEL)—compressing the massive 3D data arrays into optimized artifacts. An event is then emitted over Redis to notify all connected clients that a new volume is ready.
Instead of shipping heavy Cartesian point clouds or giant mesh models over the wire, Next.js API routes vend raw radial data in dense byte-arrays. This significantly cuts down bandwidth overhead. The browser pulls down the latest radar payload dynamically, preparing it for the WebGL pipeline.
The core of Nexrad 3D's visual fidelity is its custom Volume Ray Marching shader architecture, built on top of three.js and integrated into maplibre-gl.
Rather than parsing individual raindrops or reflectivity clusters as millions of vertices natively, the entire atmospheric volume is sent directly to the GPU as 2D data textures. The fragment shader then virtually "steps" (or marches) along the camera's line of sight through physical world coordinates. At every step, it:
The software ships with two primary modes of observation:
MaplibreRadarLayer aligns the WebGL context directly onto the Earth's surface, syncing automatically with map interactions.Inspired by OpenStorm and open-source weather analysis packages.