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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDM1NjAsIm5iZiI6MTcyMDI0MzI2MCwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1MzctM2Q0ODU5MzctZjQyYi00Y2FiLThiMTQtNjcxYzAwMTBkMTQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA1MjEwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVhMjljMzg4ODMzODNiYTc3N2IyNzc2MjQxNmQwNTQ3NzMyZWUxMTkzNTg0YzE5YjkxYWE1NTI2YTg2NzFjNGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FxEkxBSWt7zvDQwzaj3lpOh_GCVCQSJM3SZU1VzvKMI)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDM1NjAsIm5iZiI6MTcyMDI0MzI2MCwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1NDQtNTRmZDM3ZTEtY2MyMS00NTRlLThjODQtMzA4MWJmMmFjNGRmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA1MjEwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2N2U0ZjAzOTFhZThhZGI4NmQ1NjM5MTljZjBhZjg0ODJhZmJlOTViMmYxNzlkMzZmNGFjOTIyMWI2NTlhODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.QQjGC9nMttjsXuAJ173Z3jb-uU0LtyJFBAD3VLD8SbA)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDM1NjAsIm5iZiI6MTcyMDI0MzI2MCwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1NTEtMmFjOTMwMjUtMWQ3YS00ZWQ1LTljMmMtNmI1ZjE3NDc5NWVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA1MjEwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIzOGJlOGFmYjdmZDkyYTM2NmM1NmNmY2QzN2ZiNmJlOTljNWIyYzFhYzk2NDRlYjllOTU2NzJmNDExMjczYzImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Csqskm08UH7zn403sPnajM6IEtcqmJU76cIgSEHBrzY)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDM1NjAsIm5iZiI6MTcyMDI0MzI2MCwicGF0aCI6Ii83MDcwMDA3OC8yNDE1Nzk1NjAtZDk2NWVhMWMtNDYxZi00ZjRmLWEyOGUtMWNlODk1MzgwYjBkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA1MjEwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThhNjBiOTlhMDJmY2VmM2JiOWNhZWYwZjE1MTVhZTA0NWU2NTZhMDdiYWJmZjM4YzMyOTRjNzgxYjI3MzVhNGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.At_81fW87S9sz2wYFjFpBsxQI4jrrzQQi5Jo3esMbms)
- 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.