Here’s something I’ve been working on recently and would like to share:
These videos demonstrate my planet atmosphere system with physically-accurate sunlight scattering and attenuation.
The system supports both Mie and Rayleigh scattering and allows to create realistic sunsets and sunrises.
Atmosphere parameters can be edited in real time (see video below) and the atmosphere can be viewed both from space and from surface.
It can simulate dusty or foggy atmosphere using Mie scattering layer and you can even change its parameters in real time! Any complex weather and cloud simulation is not part of this package though: it only focuses on atmospheric conditions.
Neat! Well it’s certainly something I’m interested in, particularly if you can get it out within the next couple of weeks or so, our project will be finishing up soon.
Out of interest, you don’t have an alternative link where I can buy this early do you? I’m still waiting patiently for Marketplace but it looks like it’s going to take forever to get through.
I’m trying to implement it myself sooner (I’ll be purchasing this one anyway) but can’t find any decent source to look at (all the examples I’ve found are based on taking multiple samples, which is fine if you’re using HLSL but not so much if you’re not). Anything I do also needs to compile for Android (nVidia Shield) - so nodes are more ideal.
The item has been moved to the “Next Release” section of the Marketplace trello board recently, so I hope that it will be available very soon!
Actually, my implementation does take multiple samples and uses no HLSL code (only nodes). My implementation is based on this article: http://www.scratchapixel.com/old/lessons/3d-advanced-lessons/simulating-the-colors-of-the-sky/atmospheric-scattering/
The only way to accurately simulate scattering without using sample method is using precomputed lookup tables. I have tried to implement this, however, the amount of light that comes from any direction depends on four parameters: view height, view pitch, view yaw and sun angle. This requires a 4D table to store precompution results. Eric Bruneton’s GLSL implementation uses this method and uses a 3D texture to store the results: http://www-evasion.imag.fr/people/Eric.Bruneton/
UE4 however, doesn’t allow to use 3D textures easily. A semi-precomputed method is possible using just a two-dimentional table to store optical depth for all points (that only depends on view height and view pitch) and I had it prototyped. It required a separate program that I wrote in C to generate those tables and it didn’t allow to change parameters on the fly. Maybe I will finish it one day and in this case it will be a free update to my current implementation, but no promises for now!