Science On a Sphere is a NOAA project typically using four projectors to display planetary data on a six foot diameter sphere. As a federal agency, NOAA publishes data that is not copyrightable. These public domain datasets are pretty impressive, ranging from plate tectonics to solar storms. They are also insanely high resolution, with mp4 videos and jpg images at 2048×1024 and 4096×2048.

To shrink this four projector, five computer, high resolution science center exhibit down to a picoprojector, old laptop, bathroom lighting fixture setup, I had to move beyond my unoptimized python scripts to SDL, OpenGL, libvlc, and GLSL. I wrote a program called sosg, Science On a Snow Globe, which reads in images and videos and displays them in the correct format for Snow Globe. Doing the equirectangular to fisheye transform in a fragment shader is extremely lightweight, even with GMA graphics. Using libvlc makes video decoding quite performant as well, despite the resolution.

The program is the closest I’ve written to “shippable” in recent memory, but there are some rough spots. I ran into a bottleneck trying to decode high resolution jpgs in real time, so currently sosg does not support the image slideshows that the full size SOS does. It also doesn’t attempt to read in .sos playlist information. Basically, it is not an SOS replacement, just a cheap and cheerful way to view planetary data on your desktop. Unlike the original, it is also available under a permissive license and can be cloned directly from git://github.com/nrpatel/SnowGlobe.git.