Long term

This project is a long-term project that I have no intention of finishing quickly.

Box-based simplex noise spheres

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.

Atmospheres

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.

Development kit, not a game

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.

Unity vs Unreal

I created a near identical copy of this project in Unity as well:

Learn More

Blueprints vs C#

In 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

Multithreading vs Compute Shading

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 Implementation

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.

Mesh saving and instancing

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.