For a long time I wanted to create a general use procedural terrain generator. Main goals are high performance, good looks, and the ability to customize density function from the editor. Long-term plan is to use this for a game, or possibly multiple games, to generate planets, asteroids, floating islands, flat terrain, e.c.t.
Most of my notes regarding this are in Obsidian. See ReinardKuroi/worldgen for some details.
- ✅ Terrain generation via noise + fade function (CPU)
- 🔲 Terrain generation via noise + fade function (GPU Compute)
- ✅ Chunks
- ✅ Dynamic chunks based on view distance
- ✅ Collision mesh generation
- 🔲 LOD based collision mesh for performance
- 🔲 LOD meshes
- 🔲 LOD meshes based on view distance
- ✅ Threaded generation
- ✅ Background threads
- 🔲 Terrain modification via diff maps
- 🔲 Saving terrain modification
- 🔲 Terrain props (trees rocks items e.c.t)
- 🔲 Saving terrain prop maps (allows for persistent saves)
- ✅ Adaptive dual contouring with particle descent (CPU)
- 🔲 Adaptive dual contouring with particle descent (GPU Compute)
- 🔲 Marching cubes (CPU)
- 🔲 Marching cubes (GPU Compute)
- 🔲 Procedural atmospheric shader
- 🔲 Procedural terrain shader
- 🔲 Easily customizable density function
- 🔲 Support for multiple terrain root points (planets orbiting each other e.c.t.)
- 🔲 Extensive documentation
- 🔲 while (true) { Refactoring(); }
- ...