SilverLining procedural skies and 3D clouds

Anonymous Dec 21, 2009 at 15:00


We recently released version 1.91 of SilverLining, our C++ middleware for real-time rendering of the sky and everything in it. This latest release features improvements to cumulonimbus and stratus clouds, and smoother transitions into space-based viewpoints as you leave Earth’s atmosphere.

SilverLining has been an individual labor of love for the past three years, starting from a week of focused hacking in a basement. Over the years, it has evolved into a polished, serious simulation tool used not only in games, but in military flight simulators by most of the large defense contractors in that business, in broadcast video applications such as TV weather and sports broadcasts, and architectural visualization applications.

SilverLining provides physically-based skyboxes for any given time and location, even outside of Earth’s atmosphere. It combines this with accurately rendered and positioned stars, planets, and the sun and moon, along with 3D volumetric cumulus congestus, cumulus mediocris, and cumulonimbus clouds complete with lightning effects. Stratus, cirrus, and cirrocumulus clouds are also provided, together with precipitation effects for rain, sleet, wet snow, and dry snow for any simulated precipitation rate.

Everything in SilverLining is procedural - clouds are “grown” with a cellular automata, ensuring no two clouds look quite the same, but stay within the rules of what a cloud of that type should look like. The sizes and distributions of the clouds are governed by models based on real published atmospheric research. This leads to a very simple API - essentially, you just tell SilverLining where and when your scene is, the desired weather conditions, and it does the rest based on physical simulation.

Real-time performance is achieved through highly optimized geometry and vertex buffer objects to minimize state changes, offloading the math behind the lighting of the sky to vertex programs, billboarding on the GPU, bindless graphics, and other techniques.

As part of lighting the clouds and the sky, we compute the transmission and scattering of sunlight and moonlight using a modified Bird Simple Spectral Model. The resulting energy is tone-mapped, and exposed back to the application as ambient skylight and direct sunlight and moonlight. This lets you realistically light your outdoor scenes for a given time and place, consistently with the sky and clouds.

SilverLining is not a numerical engine; it handles all of the rendering of the sky and clouds for you. Since we push and pop all state surrounding our drawing, it interoperates with any graphics engine built on OpenGL, DirectX 9, DirectX 10, or DirectX 11 seamlessly without affecting the other objects in your scene. Supporting these renderers means more work for us, but makes integration very quick for our customers. For those who desire tighter coupling with their engine, individual renderers for SilverLining are implemented as simple plug-in DLL’s - new ones may be developed for your own engine to redirect all of the actual drawing. Integration code specifically for Ogre3D, OpenSceneGraph, and Gamebryo Lightspeed are provided, and full source code is provided to licensed users.

A free demo, free evaluation SDK, API reference, more screenshots, and more are available at our newly revamped website. Thank you!

1 Reply

Please log in or register to post a reply.

rouncer 104 Dec 23, 2009 at 06:53

Those clouds look nice.