Vertex is a Vulkan-based renderer.
- Vulkan initialization and setup
- GPU memory management using
VulkanMemoryAllocator
(VMA) - Shader compilation (vertex and fragment shaders)
- Multithreaded, native, OBJ model loading.
- Imgui integration
- File and console-based logging
- Profiling with Spall
To build and run this project, you need:
- Odin Compiler
- Vulkan SDK
- Python 3.x (for build script)
Ensure that both Odin and Vulkan SDK are properly installed and their paths are set in your system's environment variables.
├── src\ # Odin source files
├── scripts\ # Build and compile scripts
│ ├── build.py
│ ├── compile.bat
│ └── compile.sh
├── assets\
│ ├── shaders\ # GLSL shader files
│ ├── models\ # .obj model files
│ └── textures\ # Texture files
├── bin\ # Output directory for compiled binary
└── external\ # External dependencies
├── odin-imgui\ # ImGui bindings for Odin (submodule)
└── odin-vma\ # VulkanMemoryAllocator bindings for Odin (submodule)
- Clone the repository with submodules:
git clone --recursive https://github.com/dmcg310/vertex.git
If you have already cloned without --recursive
, you can initialize submodules with:
git submodule update --init --recursive
- Install the required Python package:
pip install colorama ply
- Build ImGui (required at least once):
python3 scripts/build.py --rebuild-imgui --debug
Or
python3 scripts/build.py --rebuild-imgui --release
- For subsequent builds, run the build script without the ImGui flag:
python3 scripts/build.py --debug
Or
python3 scripts/build.py --release
- Optionally, run the build script with the profile flag to enable profiling:
python3 scripts/build.py --debug --profile
Or
python3 scripts/build.py --release --profile
Note: this will output trace_vertex.spall
into bin/
. This can be viewed by opening spall-web, then opening the file in the icon at the top left.
This script will initialize submodules, compile the shaders, build the Odin project in the specified mode (debug or release), and run the resulting binary.
This project is licensed under the MIT License. See the LICENSE file for details.