The project contains some algorithms for procedural terrain generation implemented on C# for Unity.
Algorithms generate a heightmap, then a texture and a terrain based on it.
White noise represents a set of random values with no additional processing.
![white-terrain](https://private-user-images.githubusercontent.com/70700078/241579537-3d485937-f42b-4cab-8b14-671c0010d144.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIwNzY3NDksIm5iZiI6MTcyMjA3NjQ0OSwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1MzctM2Q0ODU5MzctZjQyYi00Y2FiLThiMTQtNjcxYzAwMTBkMTQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI3VDEwMzQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM1YjRlNzAzOWE1Mjk2MjBlNzc3NDk1NzUwNTE4OTJjZTg0YTQzZWI0MzJkOTI1MmUzYzg5NzQ3ODk4OGM1NmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.MHgFq6xlUvJ5Tx4MRLCPP7uhQvR4h8q3_TnzntI5GzU)
Perlin noise is a type of gradient noise. It is most basic yet most customizable algorithm. Proper settings allow to achieve absolutely unique textures.
![perlin-terrain](https://private-user-images.githubusercontent.com/70700078/241579544-54fd37e1-cc21-454e-8c84-3081bf2ac4df.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIwNzY3NDksIm5iZiI6MTcyMjA3NjQ0OSwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1NDQtNTRmZDM3ZTEtY2MyMS00NTRlLThjODQtMzA4MWJmMmFjNGRmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI3VDEwMzQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVhYmU3NGIxNDkxNGU3NzNmMzlhYjg1NmM2ZDM5YWJjMzgxZGEzNmUwMTJjZTYzMjAwMjY5YzFhNzAzYTA1YmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.CSUngQRyVKQ51o0lAHhIcFf3225Sr4XS4vPKm0C5XFw)
Diamond-Square algorithm is suitable for generating realistic-looking landscapes. It was once described as flawed due to noticeable vertical and horizontal creases at the edges, but who cares if it still generates a decent result?
![diamond-terrain](https://private-user-images.githubusercontent.com/70700078/241579551-2ac93025-1d7a-4ed5-9c2c-6b5f174795ea.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIwNzY3NDksIm5iZiI6MTcyMjA3NjQ0OSwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1NTEtMmFjOTMwMjUtMWQ3YS00ZWQ1LTljMmMtNmI1ZjE3NDc5NWVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI3VDEwMzQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYzMjQwMzI0ZWU5ZjVmMGUxNjlhYzFmYWQ2NWEwNDg4YWE5YzRmYzNiMzAzY2I3OTEwNWQxMDNkOGJiYTQ3MWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7ALe3kj_BgVshCe-GY92uFLtJj0AtiYLA2TgWKFXfPY)
Worley noise comes close to simulating textures of stone, water, or biological cells. Seriously, doesn't it look like sea waves?
![worley-terrain](https://private-user-images.githubusercontent.com/70700078/241579560-d965ea1c-461f-4f4f-a28e-1ce895380b0d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIwNzY3NDksIm5iZiI6MTcyMjA3NjQ0OSwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1NjAtZDk2NWVhMWMtNDYxZi00ZjRmLWEyOGUtMWNlODk1MzgwYjBkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI3VDEwMzQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgxNDQ5NDM5NDdiMTdjMmNhMDQ0OWJmMzZjMjNiN2RkYjAxZDYyMjBlZGE1ODIyMDdhYmVhZTI4YzA2NzA4NDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.m8x451Jr2_DwXKDgf9rKm7GxBvgVRrOi391crP53wns)
- Install Unity 2021.3.21 from archive.
- Clone this repository using
git clone https://github.com/vyshnovka/procedural-generation.git
in Git Bash. - Open created folder as a project in Unity Hub.