Planetarium Software

I’m the technical lead developer on a very large scale effort to implement a simulation engine for digital planetariums. This software has unique requirements that make adaptation of a commercial game engine awkward if not completely unsuitable for the task. For example, it must support a field of view beyond 90 degrees (for projection on to a dome) while maintaining support for a ‘zooming’ capability. This requires non-linear projection and most existing real-time graphics technology assumes a linear projection. Building a seamless scale model of the universe also requires overcoming numerical limitations. Modern graphics hardware is, for practical purposes, still limited to single precision floating point. However, even if it had adequate double precision capability, the universe is still too large to represent in a consistent unit such as meters. At the same time. it is not acceptable for us to have discontinuities, such as level loading, in the application; it must be seamless.

There were many more challenges in addition to those above including a physical light model, tone mapping, movement and navigation, etc. but they with time and patience were overcome. Below are some still and video highlights of the engine.


Seamless transition to other unit scales. No load screens. This renders in real-time on consumer grade hardware. Leverages multiple cameras operating in different units but all moving in concert to achieve integration from terrestrial to inter-galactic scale.  

2015-10-20_11:54:10 PM

Earth with Blue Marble terrain, cloud layer, night lights and atmospheric effects. 


Engine configured for 180 degree field of view requiring non-linear projection method.


The dark side of Jupiter’s moon Europa (lower right corner) is dimly lit by indirect light reflected by Jupiter. This is not ‘ambient light’ but rather a physically based light model factoring in the amount of photometric energy reaching Jupiter from the sun and the amount reflected given Jupiter’s albedo. The dark spot on Jupiter is the shadow cast by Europa.


A visualization of shadows cast by Uranus and some of its nearby moons.