Learning Vulkan

Over the easter weekend four weeks ago I had time to spend to spend on my own projects. I was looking to do something I could complete in three days and call finished. So I decided to brush up on my Vulkan skills. My experience prior to this had been a partially completed tutorial. I started again from scratch on the same tutorial.

I diverged from the tutorial in many places. One was on validation layers. A validation layer is vital when developing with Vulkan, but at least for beginners I wouldn’t add one manually as is done in the tutorial. It will only delay getting to the interesting stuff. Setting an environment variable before starting the application accomplishes the same for me.

VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ./metmak

Did I complete the project over the weekend? Well yes, I felt I had accomplished something, but no the app couldn’t be called complete. A 3D shape was rotating in directional lightning. And a UI element was rendered in the top left corner, but nothing happened when clicked on.

I have since the first weekend continued working on the project. There are now functioning UI elements and a more elaborate auto generated 3D shape, supposedly resembling a meteor. On top of this, text rendered from vector paths with bezier curves, something I learned from here. If there was something in Vulkan I was interested in learning, I added it to the project.

There’s no direction or end to this project, but it’s a good foundation to draw from to give life to other ideas I have. Vulkan seems less daunting now and I have more code I can resuse. Even this project has reused code from other projects I didn’t finish. Most of the math in vertex.cc was taken from another project.

I’m hosting the project at sourcehut.