A C++ wannabe engine built from scratch as part of my Bachelor's Thesis.
Currently under active development, serves as both a learning platform and research project.
Or it might just be a playground to test my sanity.
- Windows 10/11: Currently, the engine is developed and tested primarily on Windows.
- Compiler: A C++20 compatible compiler (MSVC, GCC, Clang)
- Vulkan SDK (1.3+) Required for the Vulkan rendering backend.
- Clone the repository + submodules
git clone --recursive https://github.com/Hekbas/Luth.git
- If submodules were skipped, initialize them afterward:
git submodule init git submodule update
- Generate project files with Premake:
Runscripts/setup/setup_windows.bat
- Modern C++: Uses modern C++20 features.
- Entity-Component-System (ECS): A data-oriented ECS architecture for managing game objects and logic.
- Rendering:
- Multi-API Support: Pluggable renderer backend with support for OpenGL and Vulkan.
- Deferred Rendering Pipeline: A rendering pipeline composed of the following passes:
- Geometry Pass
- Screen-Space Ambient Occlusion (SSAO) Pass
- Lighting Pass
- Transparent Objects Pass
- Post-Processing Pass
- Integrated Editor: An editor built with ImGui provides the following panels:
- Scene & Render Panels
- Entity Hierarchy
- Component Inspector
- Project & Resource Management Panels
- Resource Management:
- Virtual File System for abstracting asset paths.
- Resource Database using metadata (
.metafiles). - Libraries for materials, models, and shaders.
- Event System: A bus-based event system for decoupled communication.
- Core Utilities: A foundation of tools including logging, a thread pool, custom data types, and math helpers.
LUTH Engine uses several open-source libraries:
- ImGui: For the integrated editor interface.
- EnTT: For the Entity-Component-System implementation.
- GLFW: For windowing and input.
- GLAD: For loading OpenGL function pointers.
- GLM: For mathematics.
- spdlog: For logging.
- stb_image: For loading images.
- assimp: For importing 3D models.
- nlohmann/json: For serialization and JSON handling.
- Vulkan SDK: For the Vulkan rendering backend.

