This project is a long-term project that I have no intention of finishing quickly.
The planets are generated as a cube, with all of the vertices normalized to an equal distance, generating a sphere. After that, a simplex noise algorithm generates the mountains and oceans, which then get shaded with the planet shader I wrote.
The planets also have a simplified atmosphere shader which uses the sun's position to generate an outline. It is not volumetric so once inside the atmosphere, the illusion disappears.
Originally, I wanted to sell this as a development kit for space games on the Unreal Engine Marketplace. I probably will not be making a game with it myself. However, this turned into a study towards algorithm optimalization between engines later on.
I created a near identical copy of this project in Unity as well:
Learn MoreIn the initial test, not using any kind of multithreaded form of mesh generation, Blueprints was at most 5% slower than C#. Both bottlenecked at around 25.000 tris for the meshes, however, with over 1 second of generation time
As of now, I have yet to implement multithreading for either project. Multithreading is a somewhat risky method as if not handled properly, can pose serious risks for your CPU. Compute Shaders on the other hand will simply error out and not run if they encounter an issue. Furthermore, as GPUs are extremely good at calculating things related to vectors, vertex positions (Vector3) and colors (Vector4) are very efficient to process via the GPU.
Compute shading is completely unsupported in Unreal Engine. As such, I was forced to implement it in Unity only, and you can read more about it on the Unity page.
This tool also offers the option to save the generated meshes to be used in Runtime environments. It requires file overwriting to update existing instances, which does not happen automatically, unlike in Unity.
This project is very work in progress and does not have much to show to the public yet.