This is a beginner Vulkan Game Engine. Made following this playlist by Brendan Galea.
Follow this tutorial to create your development environment. Commands:
sudo apt install vulkan-tools libvulkan-dev vulkan-validationlayers vulkan-utility-libraries-dev spirv-tools libglfw3-dev libglm-dev libxxf86vm-dev libxi-dev glslc
whereis glslc.
├── external/ # External dependencies
│ └── tinyobjloader/ # OBJ file loader library
├── include/ # Header files
├── models/ # 3D model files (.obj)
├── shaders/ # GLSL shader source files and
│ └── compiled/ # Compiled SPIR-V shader files (.spv)
└── src/ # Source code files
├── pve/ # Core engine components and utilities
├── controllers/ # Input and game control systems
└── systems/ # Rendering and other engine systems
This project uses tinyobjloader for loading .obj files. The header file is already inside the tinyobjloader/ folder.
You'll also need to create a models/ folder and put .obj files there. Here are my files.
Your .env file should have the path for GLSLC and tinyobjloader:
GLSLC_PATH = /usr/bin/glslc
TINYOBJLOADER_PATH = external/tinyobjloader
To compile the shaders to obtain the .spv files and make and run the app use the following command:
make test