Introduction
Ever since the first human was hurled into space, the view of our planet from above has captivated the imagination of millions. That thin layer of atmosphere, clouds like blankets and the sun beaming off the surface; I can’t wait to experience this for myself one day. Until then, I shall re-create it in digital form!
Ever since the first human was hurled into space, the view of our planet from above has captivated the imagination of millions. That thin layer of atmosphere, clouds like blankets and the sun beaming off the surface; I can’t wait to experience this for myself one day. Until then, I shall re-create it in digital form!
Atmosphere
When I refer to the atmosphere, specifically the rendering of the atmosphere, I am referring to an above-planet view like is shown above. The focus of this section is that thin, fuzzy layer of air mainly composed of nitrogen. It’s weird to say it like that but it’s true.
One of the first real eye-opening solutions for rendering the Earth’s atmosphere (at least for me) was Sean O’Neil’s solution published by NVIDIA in “GPU Gems 2” in 2005.
When I refer to the atmosphere, specifically the rendering of the atmosphere, I am referring to an above-planet view like is shown above. The focus of this section is that thin, fuzzy layer of air mainly composed of nitrogen. It’s weird to say it like that but it’s true.
One of the first real eye-opening solutions for rendering the Earth’s atmosphere (at least for me) was Sean O’Neil’s solution published by NVIDIA in “GPU Gems 2” in 2005.
Chapter 16. Accurate Atmospheric Scattering – GPU Gems 2
https://developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-16-accurate-atmospheric-scattering
https://developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-16-accurate-atmospheric-scattering
In his article, O’Neil expands on Nishita et al’s work from their 1993 seminal paper “Display of the Earth Taking into Account Atmospheric Scattering,” still available at http://nishitalab.org/user/nis/cdrom/sig93_nis.pdf. As I quickly read through O’Neil’s article years ago, I was astonished people had gone to such great lengths since the 1980s to wrestle with equations for Rayleigh and Mie scattering to simulate light passing through our atmosphere. Besides interpreting Nishita et al’s work, imo one of the big accomplishments O’Neil achieved was making a real-time solution. Great work, Sean! (And great name. 😉)
Since O’Neil’s work, there have been many others to follow the pursuit of rendering a realistic planetary atmosphere, notably Lukas Hosek and Alexander Wilkie, Eric Bruneton, and later Sébastian Hillaire.
Since O’Neil’s work, there have been many others to follow the pursuit of rendering a realistic planetary atmosphere, notably Lukas Hosek and Alexander Wilkie, Eric Bruneton, and later Sébastian Hillaire.
Hosek-Wilkie Sky Model
https://cgg.mff.cuni.cz/projects/SkylightModelling/HosekWilkie_SkylightModel_SIGGRAPH2012_Preprint.pdf
https://cgg.mff.cuni.cz/projects/SkylightModelling/HosekWilkie_SkylightModel_SIGGRAPH2012_Preprint.pdf
Precomputed Atmospheric Scattering – Eric Bruneton
https://ebruneton.github.io/precomputed_atmospheric_scattering/
https://ebruneton.github.io/precomputed_atmospheric_scattering/
A Scalable and Production Ready Sky and Atmosphere Rendering Technique – Sébastien Hillaire – Epic Games, Inc.
https://sebh.github.io/publications/egsr2020.pdf
https://sebh.github.io/publications/egsr2020.pdf
Bending Time implemented the O’Neil solution (a co-op at the time, thanks Ramit!) using the same texture generation/lookup in Unity. The results were good, though it does use spheres for the outer and inner limits of the atmosphere, which I would prefer to be ellipsoids but, so far, it hasn’t been that noticeable.
Sky
When I refer to sky, I refer to the case when the Observer is on the surface and looking up. In many Cartesian-coordinate-system-based games, a skybox is used. Skyboxes are commonly provided as cubemaps.
Sky
When I refer to sky, I refer to the case when the Observer is on the surface and looking up. In many Cartesian-coordinate-system-based games, a skybox is used. Skyboxes are commonly provided as cubemaps.
These work well because they occupy the background of a scene where the user is not typically focused. And they’re cheap to render. However, for a lifelike virtual world, we need a realistic and accurate sky.
O’Neil’s solution is as far as we got on Bending Time. The sky as viewed from the surface wasn’t properly verified (and likely does not work well in all cases). One thing I did notice was that the transition from space to ground (i.e., atmosphere to sky) was non-trivial and contained artifacts. It would appear one continuous model for both atmosphere and sky is the best option for a lifelike virtual world, but this requires the proper funding and business case to pursue further.
Clouds
Bending Time has not worked on rendering clouds, but I do have some background here as my team on the Aurora program back in 2006 modeled 3D volumetric clouds for the weather radar simulation. Though, admittedly, rendering fluffy white 3D clouds with soft edges, etc. is a whole ‘nother level.
To my surprise, when I stumbled upon the website of the Computer Graphics Lab at the University of Tokyo as part of writing this article, Professor Nishita and his students have done quite a bit more work on rendering natural scenes beyond atmosphere. Check out http://nishitalab.org/index-e.html. You’ll see further work on rendering natural phenomena including clouds.
More recently, I came across Felix Westin’s work on his UHawk flight simulator game. A side-project of his that looks amazing. He clearly has spent quite a bit of time working on rendering 3D clouds, so much so that he created a Unity asset for volumetric sky, lighting and clouds called Overcloud.
O’Neil’s solution is as far as we got on Bending Time. The sky as viewed from the surface wasn’t properly verified (and likely does not work well in all cases). One thing I did notice was that the transition from space to ground (i.e., atmosphere to sky) was non-trivial and contained artifacts. It would appear one continuous model for both atmosphere and sky is the best option for a lifelike virtual world, but this requires the proper funding and business case to pursue further.
Clouds
Bending Time has not worked on rendering clouds, but I do have some background here as my team on the Aurora program back in 2006 modeled 3D volumetric clouds for the weather radar simulation. Though, admittedly, rendering fluffy white 3D clouds with soft edges, etc. is a whole ‘nother level.
To my surprise, when I stumbled upon the website of the Computer Graphics Lab at the University of Tokyo as part of writing this article, Professor Nishita and his students have done quite a bit more work on rendering natural scenes beyond atmosphere. Check out http://nishitalab.org/index-e.html. You’ll see further work on rendering natural phenomena including clouds.
More recently, I came across Felix Westin’s work on his UHawk flight simulator game. A side-project of his that looks amazing. He clearly has spent quite a bit of time working on rendering 3D clouds, so much so that he created a Unity asset for volumetric sky, lighting and clouds called Overcloud.
And my most recent Googling of rendering 3D volumetric clouds turned up a resource posted on GitHub by Piyush Verma, which can be found at https://gist.github.com/pixelsnafu/e3904c49cbd8ff52cb53d95ceda3980e. Here he lists resources that he collected on the subject.
And this is where I will leave you on the subject. I’m sure you were hoping to see all sorts of nitty-gritty details about rendering 3D volumetric clouds but that’s part of the problem with communicating the challenges of a true-scale, planet-wide virtual world. You see all these nice papers and videos but very few of the techniques/solutions work at planet scales. Like I mentioned in my Forest/Ground Rendering blog post, the vast majority of game developers work in a scene editor with all the data they need for that scene on disk.
I’m not afraid of the challenges ahead but I have to be smart about it. Rendering 3D volumetric clouds is expensive and must be tied to business in order to be funded. Until then, I’ll keep my “caput in nubibus.”
--Sean
And this is where I will leave you on the subject. I’m sure you were hoping to see all sorts of nitty-gritty details about rendering 3D volumetric clouds but that’s part of the problem with communicating the challenges of a true-scale, planet-wide virtual world. You see all these nice papers and videos but very few of the techniques/solutions work at planet scales. Like I mentioned in my Forest/Ground Rendering blog post, the vast majority of game developers work in a scene editor with all the data they need for that scene on disk.
I’m not afraid of the challenges ahead but I have to be smart about it. Rendering 3D volumetric clouds is expensive and must be tied to business in order to be funded. Until then, I’ll keep my “caput in nubibus.”
--Sean