The Atmosphere Awakens...
For this update, we have our technical artist/programmer/wunderkind Logan discussing how he created the new atmosphere shader for Outer Wilds. Take it away, Logan!
My first step in approaching the challenge of planetary atmosphere in Outer Wilds was to start reading papers. Lots and lots of papers. After a week of filling my brain with Rayleigh and Mie scattering, 4-dimensional textures, and raymarching, I was completely fried. There were a lot of different approaches out there, but a lot of them managed end-runs around the difficult parts by simply finding ways to not do them. A lot of atmosphere shaders were split into separate parts that only worked on the ground or space, or that were hardcoded to specific thickness ratios, or that relied on the planet not being any more complicated than a perfect sphere sitting completely still in space.
For Outer Wilds, we needed a single solution that would look good from outside, on the ground, and every point inbetween (and then some). It also had to work on multiple planets zipping around in orbit. Additionally, since a big part of Outer Wilds is real-world phenomena appearing in our systems (like the Coriolis effect), I wanted it to realistically simulate light scattering to at least some degree.
Sean O'Neil's work (found in GPU Gems 2) was particularly helpful in finding our own solution. Although our approach is similar (we sum up samples of the atmosphere along a ray from the camera to the far position), I replaced a vast majority of his equations with my own, and added even more to combine his multiple-shader approach into a single one. Ultimately, we found a happy balance between artistic control and simulation, and we're still regularly ooh-ing and aah-ing at the results!
Thanks, Logan! We've done most our testing in Timber Hearth, and the team cannot wait to implement it across the Solar System!
4/29/2021 02:15:02 am
Hey Mobius, I was very interested by this atmospheric scattering solution by Logan, was wondering if its possible I could get a more detailed description on how you acheived this, I have red and implemented Sean O'neals work but have not been able to achieve an amazing effect such as yours which makes use of mie scattering as well as some sort of control over density, I found Sean's work resulted in an incredibly bright spot in the center of the planet, any information/tips or pointers would be great, many thanks,
Comments are closed.
Updates on our games, our process, and the joys of being Mobius Digital.