⚠ Warning: This repository contains a minimal Vulkan engine intended for learning, prototyping, and demonstration purposes. It is not optimized for production or full-scale game development.
A simple 3D rendering engine built from the ground up using the Vulkan 1.0 API. It serves as a learning tool and a base for building more complex graphics applications.
- Vulkan API: Low-level rendering with predictable performance and fine-grained GPU control
- 3D Model Loading:
.objfile support with automatic buffer generation via tinyobjloader - Lighting System: Ambient + point light rendering with proper normal calculations
- Entity-Component-System: Custom ECS implementation (
vke::Coordinator) for flexible scene management - Event System: Template-based event handling for window resizing, pipeline recreation, and input processing
- Memory Allocator: Custom Vulkan memory management with automatic allocation and alignment
- Asset Sharing: Centralized model manager for efficient resource reuse across entities
- Descriptor Abstractions: Simplified shader resource binding with type-safe updates
- High-Level Wrappers: Clean C++ abstractions for
Device,Swapchain,Pipeline, andBuffer - Automatic Synchronization: Proper frame-in-flight handling with semaphores and fences
- First-Person Camera: WASD movement with arrow key look controls and configurable speeds
Before building the project, be sure you have the following installed on your system:
- Nix:
nix-shellprovides an environment with required system dependencies - Xmake: Simple cross-platform build system
Clone the repository:
$ git clone https://github.com/suddencollection/vkengine/
$ cd vkengine
Enter the nix shell:
$ nix-shell
Build the project:
$ xmake
Run the Application:
$ xmake run
- Move Forward/Left/Back/Right:
W,A,S,D - Move Up/Down:
Spacebar,Left Shift - Look Up/Down/Left/Right:
Up,Down,Left,Rightarrow keys
- Vulkan Tutorial: Vulkan API explanation and usage
- Brenda Galea: Engine architecture and avanced features
