This project is mainly focused on the learning process of using Vulkan API with Rust. The goal is to explore techniques of abstracting the raw Vulkan API exposed by Vulkano through the development of a simple map generator.
Build and run the Vulkan backed window with:
cargo run
Remember to recompile shaders if changes are made to them.
./compile_shaders.sh
This will compile .vert
and .frag
files into Vulkan .spv
SPIR-V bytecode, which will be read by the main application.
Currently the architecture of the core Vulkan components are layed out as follows:
The diagram shows the dependencies between the components. The arrows can be read as "is dependent on". For example Device
is dependent on Surface
. In addition, the macro components Base
, Fixture
and Sweep
also have dependencies amongst one another. Sweep
is dependent on Fixture
, which is itself dependent on Base
. If any component within a macro component changes or gets updated, all macro components which depend on it needs to be rebuilt. For example, if the SwapChain
is rebuilt, for example due to a window resize, the Fixture
and all Sweeps
dependent on said Fixture
, need to be rebuilt on the new Fixture