Terrain generation

I used Unreal Engine 4 to create a runtime terrain generator. Below is a quick demo video.


The terrain is seperated into multiple procedural meshes which gain their height from a layered simplex noise function. The reason I didn't use one single terrain mesh was that updating the entire terrain in one frame is too much of a performance hit. The current setup is still very sub-optimal as a lot of code should be moved to C++ and the procedural meshes should be replaced with a more performant alternative. Doing this would allow for a much smoother and faster creation process, likely even within one frame.

Vegetation is placed based on humidity, steepness and water level. The dense vegetation uses a "hierarchical instanced static mesh component" to combine all vegetation within one terrain tile into one draw call, allowing for very dense grass. The largest performance hit on the GPU comes from grass overdraw and the dynamic lighting.

The materials blend between 9 climates based on Humidity and Temperature, using a noise function as offset for a more patch-like transition as opposed to linear gradient transition.

Climate comparison.

Humidity / water level comparison.

Climate blending test without vegetation.

Climate blending test with vegetation.

Early climate and height comparison.