Since this was intended as a programming exercise I have not tried to be very elegant or correct during the implementation, so expect things like error handling to be a bit rough around the edges, but otherwise I think the code should be easy enough to follow.
Notice that I have only tested this on Intel GPUs. I know it works on NVIDIA too (thanks to Samuel and Chema for testing this) but there are a couple of rendering artifacts there, specifically at the edges of the skybox and some “pillars” showing up in the distance some times, probably because I am rendering one to many “rows” of the terrain and I end up rendering garbage. I may fix these some day.
The code I uploaded to the repository includes a few new features too:
- Model variants, which are basically color variations of the same model
- A couple of additional models (a new tree and plant) and a different rock type
- Collision detection, which makes navigating the terrain more pleasent
Here is a new screenshot:
In future posts I will talk a bit about some of the implementation details, so having the source code around will be useful. Enjoy!