A project to teach myself more about GPUs, modern Vulkan practices and C++23.
Velo uses dynamic rendering, timeline semaphores, as well as descriptor indexing and the associated features needed for bindless descriptors. Memory is allocated using Vulkan Memory Allocator.
- Cmake 4.x (downloads page)
- Ninja
- Vulkan 1.3
- Slang (github releases)
- Important make sure you have SLANGC_EXECUTABLE environment variable set and pointing to the slangc executable itself. Vulkan SDK ships with it included.
- bash
export SLANGC_EXECUTABLE="$VULKAN_SDK/bin/slangc" or export SLANGC_EXECUTABLE=~/path/to/slangc - fish
set -Ux SLANGC_EXECUTABLE $VULKAN_SDK/bin/slangc or set -Ux SLANGC_EXECUTABLE /path/to/slangc
- bash
- Important make sure you have SLANGC_EXECUTABLE environment variable set and pointing to the slangc executable itself. Vulkan SDK ships with it included.
- Clang
- glm
- glfw
git clone https://github.com/omathot/Velo.git
cd Velo
cmake -G Ninja -B build -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug
cmake --build build
./build/velo
-DX11=ON (force X11 - useful for renderdoc)
-DINFOS=ON (creates infos/ dir and stores available vk features/extensions/layers and required glfw extensions)
-DTIDY=ON (run clang-tidy on Velo, longer build times)
-DCODAM=ON (different code path, testing repurposing this for a codam advanced project)
- W : Move object further
- S : Move object closer
- A : Move object to the left
- D : Move object to the right
- UP : Move object up
- DOWN : Move object down
- SPACE : Switch rotation direction
- C : Start/Stop rotation toggle
- - : Slow rotation down
- = : Speed rotation up
Tested on 5070 and 9070XT

