Skip to content

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

License

Notifications You must be signed in to change notification settings

otto-link/HighMap

Repository files navigation

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.

Warning

Work in progress, use at your own risk!

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_noise_fbm
eog ex_noise_fbm_*.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 ocl-icd-opencl-dev assimp

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Languages