We’re excited about today’s SilverLining 4.058 release! It’s focused on performance and memory efficiency, and it’s made some huge strides. You can get the latest evaluation version here, and licensed customers can get their updates too.
The image attached to this article shows a cumulus congestus layer almost 200km across, with 110% cloud coverage – running at over 60 frames per second! There are literally millions of vertices in the massive amount of clouds in this scene, and yet it still leaves more than enough CPU and GPU horsepower left for the rest of the flight simulator to work with.
One key improvement was better management of GPU memory. Each cloud in SilverLining is basically a cube of cloud puffs that are “grown” using a cellular automaton. But, most users don’t actually grow clouds in real time – they set up their clouds at initialization, and keep them static. SilverLining 4.058 prevents unused cloud puffs after initialization from consuming any GPU resources in this case, and this results in a 50% reduction in VRAM usage for cumulus clouds. Not only does that free up more memory for the rest of your scene, it makes it less likely for your GPU to start swapping resources – and it also makes it easier for SilverLining to discard blocks of vertex and index data as clouds are deleted and new ones are created.
We also had another round of profiling and optimization on SilverLining; when you have a massive amount of clouds, the CPU tends to be the bottleneck as it just tries to keep up with updating the positions and lighting of all those clouds. We found a few more opportunities for short-circuiting some of those updates under common conditions, and this frees up a considerable amount of CPU power – leading to better framerates. We’ve also moved to more efficient data structures internally where appropriate, which also helped.
We’ve tested these changes fairly extensively, but if you do run into any new anomalies, please let us know.