Open Zylann opened 6 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
where's the video of Horizon Zero Dawn?
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
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 holesLumix 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