A modular Unity package for generating high-quality procedural planets with LOD support, biomes, and custom shader effects. Designed to be easily integrated into any Unity project via the Package Manager.
- Dynamic Mesh Generation: Multi-threaded (Unity Job System compatible structure) terrain generation based on cube-sphere topology.
- Level of Detail (LOD): Proximity-based resolution scaling for optimal performance.
- Biome System: Elevation and noise-based biome distribution.
- Customizable Shaders: Shader Graph-based terrain rendering with support for multiple terrain layers (Sand, Grass, Mountain, Snow).
- Flexible Settings: ScriptableObject-based configuration for shape, color, and noise.
- Orbit Camera: Built-in smooth camera controller with zoom, vertical limits, and auto-rotation support.
- Open the Unity Package Manager (
Window > Package Management > Package Manager). - Click the
+icon and selectInstall package from git URL.... - Paste the URL of this repository.
- Download or clone this repository to your machine.
- In the Unity Package Manager, click
+and selectInstall package from disk.... - Select the
package.jsonfile inside theUnityProceduralPlanetModulefolder.
-
Create a Planet Object:
- Right-click in the Hierarchy and create a new Empty GameObject.
- Add the
Planetcomponent to the object.
-
Assign Settings:
- Create or assign Shape Settings and Color Settings (found in the
Runtime/PlanetSettingsfolder of the package). - Assign a Material that uses the
PlanetTerrainshader.
- Create or assign Shape Settings and Color Settings (found in the
-
Configure Camera:
- Add the
OrbitCameracomponent to your Main Camera. - Assign your Planet as the
Target(or leave empty to auto-detect). - Assign the Main Camera (or any viewer transform) to the
Viewerfield in the Planet component to ensure LOD works correctly.
- Add the
-
Generate:
- Click the Generate Planet button in the inspector or enable Auto Update.
- Namespace:
ProceduralPlanet - Assembly:
ProceduralPlanet.Runtime,ProceduralPlanet.Editor - Unity Version: 6000.0+
Project code is provided under the MIT License and was created as part of a Bachelor's Thesis project.
The Runtime/Scripts/Noise.cs file contains libnoise-dotnet/simplex-noise-derived code and keeps its original LGPL notice in the source file. Third-party textures, fonts, icons, and Unity packages must keep their original licenses and attribution in the final thesis submission.