After creating a basic Vulkan renderer earlier in the year, I decided to use it for my final year dissertation project, in which I wanted to simulate hydraulic erosion. Previously, I had created a infinite procedural terrain generator, but this year I wanted to focus more on the quality of a small chunk of terrain.


This dissertation taught me:

  • How a simple form of water erosion works
  • How to use compute shaders in Vulkan
  • GPU Synchronisation and how the GPU functions as a whole

In conclusion, I have learnt lots about graphics programming from my work. Because of this, I have been able to identify problems with my current renderer and the pitfalls of many of the ways I have solved problems within the small timeframe I had. In the future, I aim to rewrite a renderer in Vulkan, but this time instead build up a feature set in smaller sections and create a renderer that is more adaptable and easy to use.