in Rust. I'm primarily following Kyle Mayes' Rust translation of the tutorial,
which adds some additional "experimental" chapters about techniques for working
with dynamic scenes. However, there are some large differences between Kyle's
book's code and my code:
- Instead of using Kyle Mayes'
vulkanaliacrate for my Vulkan bindings, I'm using the
ashcrate, purely because most higher-level Rust graphics libraries are also using
ashhave very similar APIs, as they are both primarily generated from the Vulkan API spec, but there are some differences in the helper functions implemented in each library.
- I'm using the
tracingsuite instead of the
logsuite for logging. This gives me span tracking, which I use in many of the setup functions via the
tracing] actually properly categorizes messages from Vulkan's validation layer into the spans, so long as multithreaded processing isn't being used (which my code mostly avoids).
- I'm using
anyhowbecause pretty colours sooth my soul when my app crashes (and because there's some integration with
- To ease the pain on my poor VSCode install (and my poorly-cooled laptop), I've split the book's single massive Rust source file into many smaller files. This makes rust-analyzer happy.
All commits that follow chapters in Kyle's book are named according to the chapter title, with one commit per chapter. There are some other commits here and there for maintenance, refactoring, or bug-fixing.
Once I finish the book, I may begin experimenting with loading GLTF models and implementing physically-based rendering. Maybe I'll even figure out how skeletal animation works. Aaaannnd I should probably create proper RAII wrappers for all the Vulkan objects I use. We'll see :)
The original book's text was licensed under the CC BY-SA 4.0 license, while its code listings were licensed under the CC0 1.0 Universal license. Meanwhile, the entirety of Kyle Mayes' adaptation is licensed under the [Apache 2.0][vulkanalia-license] license. Therefore, as I am not re-publishing the original book, and using code samples primarily from Kyle Mayes' adaptation (with reference to the originals), my code is also licensed under the Apache 2.0 license.