/HighMap

A C++ library to generate two-dimensional terrain heightmaps for software rendering or video games.

Primary LanguageC++GNU General Public License v3.0GPL-3.0

HighMap

A C++ library to generate two-dimensional terrain heightmaps for software rendering or video games. HighMap is the core solver of the Hesiod GUI.

ex_hydraulic_vpipes_1

Warning

Work in progress, use at your own risk!

WS310836__67171

License

This project is licensed under the GNU General Public License v3.0.

Getting started

Getting the sources

Use git to retrieve the sources:

git clone git@github.com:otto-link/HighMap.git
cd HighMap
git submodule update --init --recursive

Building

Linux

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

Windows

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.

Usage examples

ToDo.

Documentation

Development roadmap

  • 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
  • Biomes
    • micro-climate
      • dominant wind
      • precipitation map
      • snowfall map
      • sun exposure
    • soil type
    • vegetation (flora)
    • animals (fauna)
  • 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
  • UI
    • splatmap generation
    • multiscale terrain class
    • gateways to Unity, Unreal Engine...
  • Performances
    • distributed / tiled computation
    • multithreading