A C++ library to generate two-dimensional terrain heightmaps for software rendering or video games. HighMap is the core solver of the Hesiod GUI.
Work in progress, use at your own risk!
This project is licensed under the GNU General Public License v3.0.
Use git
to retrieve the sources:
git clone git@github.com:otto-link/HighMap.git
cd HighMap
git submodule update --init --recursive
Build by making a build directory (i.e. build/
), run cmake
in that dir, and then use make
to build the desired target.
Example:
mkdir build && cd build
cmake ..
make
Simple examples are provided for most of the functions, for instance:
bin/./ex_fbm_perlin
eog ex_fbm_perlin.png
Use PowerShell
to clone the repository (because Visual Studio won't clone the submodules) using git
command lines (see above).
Install the missing OpenSource dependencies using vcpkg
:
vcpkg install eigen3 libpng boost-range boost-type-erasure boost-geometry glm opencl
You should then be able to build the sources using Visual Studio.
ToDo.
- Heightmap generation and alteration
- procedural noise (Perlin, fractal...)
- controlled generation
- terrain surface from a set of points (thinplate interpolation)
- terrain surface from a sketch / splatmap
- pointwise modifications
- Physics-based mechanisms
- erosion / deposition
- thermal
- hydraulic
- sediment deposition
- wind
- hydrology
- surface water system (stream and pool maps)
- downcutting (vertical erosion of stream's bed or valley's floor)
- heightmap fixing to ensure unbroken flow streams
- snow deposition
- ice floe
- lava/glacier viscous flow
- erosion / deposition
- Biomes
- micro-climate
- dominant wind
- precipitation map
- snowfall map
- sun exposure
- soil type
- vegetation (flora)
- animals (fauna)
- micro-climate
- Object automatic placement
- rocks, boulders, cliffs...
- trees
- cities
- Anthropic features
- roads / paths
- communication network
- path/road digging and leveling
- cities
- ground leveling
- inner structure (streets)
- agriculture
- roads / paths
- UI
- splatmap generation
- multiscale terrain class
- gateways to Unity, Unreal Engine...
- Performances
- distributed / tiled computation
- multithreading