
Procedural Solar System
Tool for simulating solar systems. Parameters allow for the generation of a wide variety of moons and planets. Noise layers along with masks generate planet terrain on the GPU and are incredibly efficient. A water shader can be used for planets with oceans.
Planets and moons orbits are simulated accuratley according to Newtonian physics.
​
Moon Generation
Moons generate through a three stage GPU compute shader pipeline. The process begins with the generation of a sphere mesh using a sphere generation compute shader that outputs vertices with a specified segment resolution and radius. Subsequently craters are formed using parabolic math to create realistic rims and cavities. A bias towards smaller craters is used for realism. Finally layerd fractal noise dispalces the generated vertices to create a varied and more interesting surface introducing ridges and finer details.
Planet Generation
Planets generate using three compute shaders. First, the planet dispatches the same sphere shader as the moon. This sphere is then deformed using the planet shader. Noise and masks combine to generate continents, rivers, valleys and other geographical features. Vertexes are coloured in this shader based on their location and its gradient. Parameters can be tweaked to alter characteristics of generated planets. A water shader creates the oceans with adjustable murk, scattering etc... Finally a post-processing pixel shader creates the atmosphere around planets simulating accurate light scattering.
Orbits
Every celestial body calculates the gravitational force acting on it from all other bodies in the scene using Newtons law of Universal Gravitation (F = G * (m1*m2)/r²). The force determines the acceleration which updates the velocity and postion of the body over time. Orbits can be visualised using a debug feature.
Atmospheres
Still a work in progress.
Currently have
-Ray Marching
-Rayleigh Scattering
Gallery













