Over at Sundog Software, we have released version 1.086 of SilverLining, our SDK for real-time cloud and sky rendering for DirectX9 and OpenGL C++ Windows developers.
This latest version improves performance, memory footprint, and visual quality, enabling large cumulus cloud decks that stretch from horizon to horizon. Single-product royalty-free licenses are available for $250 USD. Full source code is provided with the purchase of a license. A free evaluation version of the SDK, documentation, and an interactive demo app are available at http://www.sundog-soft.com.
Cumulus, stratus, and cirrus clouds are simulated. We model the transmission of light from the sun and the moon through the atmosphere, and then simulate multiple forward scattering of the light through the clouds. The clouds themselves are procedurally generated; they are "grown" at initialization time using a cellular automata. For faster startup times, cloud decks may be saved and restored once created.
To ensure fast rendering, we employ vertex shaders and vertex buffer objects to draw the many billboards that make up each cloud within the GPU. This allows us to draw each cloud as a single triangle strip that's stored locally on the video card. Distant clouds may optionally be rendered as dynamically generated imposters to reduce geometry and depth complexity.
An ephemeris model simulates the positions of the sun, moon, stars, and planets for any given location at any given time, and this feeds into the lighting simulation. We apply a tone-mapping operator to the simulated light to provide realistic perceptual lighting in both daytime and nighttime scenes, and we expose this lighting information to the application for lighting your scene.
The SDK integrates seamlessly with any OpenGL or DirectX application under Windows. It has been successfully integrated with several third-party rendering engines; you just need to initialize the library, call it at the beginning of your frame (where we draw the sky), call it at the end of your frame (where we draw the clouds), and you're done. Since SilverLining saves and restores all transforms and rendering states surrounding its rendering, it coexists with any other renderer. Developers who desire tighter integration may develop their own renderer plug-ins to call directly to their own engines, in addition to our OpenGL and DirectX9 plugins.