Zylann / godot_heightmap_plugin

HeightMap terrain for Godot implemented in GDScript
Other
1.73k stars 159 forks source link

Resources about other terrain systems #20

Open Zylann opened 6 years ago

Zylann commented 6 years ago

Copied from https://github.com/Zylann/godot_heightmap_module/issues/15 I'm making this thread to reference useful info about other terrain systems. May not always be doable in Godot 3.0 (GLES3) while keeping the tool simple, but it's a good source of inspiration. Note that spherical/voxel terrains aren't the target for this plugin, they work very differently.

Just Cause 2: https://www.gamasutra.com/view/feature/192007/sponsored_the_world_of_just_cause_.php Megaterrain, 32km across, layer types, streaming from CD, geomorphing, clipmaps

Witcher 3: http://www.gdcvault.com/play/1020197/Landscape-Creation-and-Rendering-in Megaterrain, more than 16km across, two splat layers (background and overlay), clipmaps, many twists, avoids discard to make holes

Lumix Engine: https://github.com/nem0/LumixEngine Classic heightmap, one splat layer using texture arrays, satellite map for far away terrain, uses CLOD

Texture blending trick: https://www.gamasutra.com/blogs/AndreyMishkinis/20130716/196339/Advanced_Terrain_Texture_Splatting.php Use alpha as depth to blend detail textures, looks similar to Witcher 3 overlay technique --> currently implemented

Farcry 5 terrain system: https://drive.google.com/file/d/1H6ouhi96pLg8WDlwXSGHFupPyZDv2MF6/view 10x10km, similar to what the module does, but also implements streaming to handle such a large size and most of it happens on GPU instead. The more I see those techniques the more I think Godot should support compute + scriptable rendering pipeline, it's frustrating :p Also outputs NaNs in vertex positions to create holes instead of fragment discard! Uses ID+weight splatmaps, and optimize amount of texture fetches and do displacement decals by using... virtual textures?? Guess that's another candidate for partial texture streaming. Also use the heightmap to bend tree roots and clutter placed on the ground

Horizon Zero Dawn Multiple GDC videos on YouTube when searching for "Horizon Zero Dawn Terrain" on YouTube. Example of one https://www.youtube.com/watch?v=ToCozpl1sYY The devs made a conference where they explain how all their terrain stuff is generated at runtime almost entirely from the GPU. They graph multiple maps to compose the landscape with rules, which they paint using brushes (paint forest, paint rocks, paint road...) and everything updates procedurally. Grass and trees are placed using dithered textures where 1 pixel is 1 object, and displaced with some noise.

Terrain in Urho3D: https://github.com/JTippetts/U3DTerrainEditor

Erosion techniques

Riordan-DC commented 4 years ago

GPU Gems Article on clipmapping https://developer.nvidia.com/gpugems/gpugems2/part-i-geometric-complexity/chapter-2-terrain-rendering-using-gpu-based-geometry

xoyojank commented 2 years ago

where's the video of Horizon Zero Dawn?

Zylann commented 2 years ago

There are multiple ones actually, you can search for "Horizon Zero Dawn Terrain" on YouTube. Example of one https://www.youtube.com/watch?v=ToCozpl1sYY