Under development...
A 3D Vulkan game engine for my personal study and interests.
This project was initially created by following the tutorial of Little Vulkan Engine for learning Vulkan and Game Engine. More features will be added soon.
- CMake
- C++ compiler: g++ or clang++ or msvc
- Vulkan SDK: https://vulkan.lunarg.com/sdk/home
- GLFW3
- GLM or Eigen3
This project has set up GitHub Actions, follow the instruction to install the dependencies and build.
sudo apt update
sudo apt install -y libvulkan-dev vulkan-tools glslang-tools libglfw3-dev libeigen3-dev libglm-dev
For development in Debug
mode, Vulkan SDK is
needed to enable validation_layer
.
You can install it using following commands.
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list http://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list
sudo apt update
sudo apt install vulkan-sdk
You can use vcpkg or MSYS2 to install the dependencies.
If you use vcpkg on Clion, follow the official guide to integrate vcpkg with Clion.
You can use bash build.sh
to build the project or bash run.sh
to build and run the project.
The following libraries are used and pre-installed in this project.
File | Version | Project Link |
---|---|---|
stb_image.h | v2.29 | https://github.com/nothings/stb |
tiny_obj_loader.h | v2.0.0 | https://github.com/tinyobjloader/tinyobjloader |
- Physics Engine (Working on)
- ECS: Entity Component System
- Refactor the project: naming, structure
- Feature: Texture
- Feature: Shadow
- Feature: PBR
- GUI: ImGUI
- Audio Engine(optional)
- GitHub CI is not working properly: enabled extensions in shaders
- Some function calls are not in the proper place.
- Refactor 2D renderer and separate some functions.
- Little Vulkan Engine: https://youtu.be/Y9U9IE0gVHA?si=42keJCaEPE-R697P
- ECS: https://austinmorlan.com/posts/entity_component_system/
- Game Loop: https://gameprogrammingpatterns.com/game-loop.html