A work-in-progress rendering engine built from scratch with Vulkan.
Burraq Engine is a barebone rendering engine I built to learn the Vulkan graphics API. It features a modular architecture with a complete Vulkan abstraction layer, an event-driven input system, and a configurable graphics pipeline with automatic shader reflection. The repo includes a Minecraft-style voxel demo as a reference implementation.
- Vulkan Rendering Pipeline — Swapchain management, descriptor sets, push constants, and 3-frame pipelining
- Automatic Shader Reflection — Descriptor set layouts generated from SPIR-V bytecode via SPIR-V-Reflect
- Mesh Loading — OBJ model loading with vertex/index buffer management
- Texture System — 2D textures and cubemap support for skyboxes
- Skybox Rendering — Configurable skybox with dedicated shaders and cubemap sampling
- Camera System — Perspective camera with mouse-look and keyboard controls
- Event System — Type-safe event dispatcher for keyboard, mouse, and window events
- Input Management — Centralized keyboard (512 keys) and mouse (8 buttons) tracking
- Logging — Multi-level logger (Info/Trace/Warn/Error/Critical) with color-coded console and file output
- Minecraft Demo — Chunk-based voxel world (5x5 chunks, 16x16x16 blocks each) with multiple block types
- C++ / Vulkan
- GLFW — Window management
- GLM — Mathematics
- Vulkan Memory Allocator — GPU memory management
- SPIR-V-Reflect — Shader reflection
- stb_image — Image loading
- meshoptimizer — Mesh optimization
- Windows (the engine uses Win32 APIs)
- Vulkan SDK
- Visual Studio 2019+
- Clone the repo
git clone https://github.com/mosamaasif/Burraq_Engine.git
- Open
Burraq.slnin Visual Studio - Build and run the
Minecraftproject (the demo application)
Shaders are pre-compiled to SPIR-V. To recompile after editing, run Minecraft/Resources/Shaders/ShaderCompilerScript.bat (requires glslangValidator from the Vulkan SDK).
Distributed under the MIT License. See LICENSE for details.