Apr 21 2012 09:02 AM
SilverLining provides 3D clouds and procedural skydomes for any time, location, and weather conditions. I've just released a version for Unity, shown in this screenshot, which is available at indie-friendly pricing within the Unity Asset Store. You can check out a webplayer demo to see it in action. C++ libraries for pro users are available here, which includes integrations for other engines including Havok Vision, Gamebryo Lightspeed, Ogre3D, SceniX, and OpenSceneGraph.
Porting SilverLining's key features from C++ / OpenGL / DirectX to Unity was faster than expected. Most of the core algorithms translated easily to C# scripts, and most of the heavy lifting on the graphics side is accomplished by tricking Unity's built-in particle systems into rendering the clouds. Interestingly, we found Unity's legacy particle systems to be twice as fast as its new "Shuriken" particle system - since we're just using them to render collections of billboards, all of Shuriken's particle animation features just added unnecessary overhead for us, and we stuck with the older version. In the end, SilverLining for Unity ended up with performance comparable to its native implementation, and we ended up with a product that works well on iPads as well as desktops.
We also used this re-write as an opportunity to update the lighting model used for the clouds. SilverLining for Unity implements multiple forward scattering in the vertex shader for smooth continuous time of day transitions, and we switched from a simple Rayleigh phase function for the clouds to a much more realistic Henyey-Greenstein model. What this means is that backlit clouds really pop now, and SilverLining finally has real silver linings on clouds under these conditions! We also improved the tone mapping approach used to provide more dynamic range on the cloud lighting.
Feedback welcome! I've attached demo videos of both SilverLining for Unity and the C++ version if you'd like to check them out.