Skip to content
/ Luth Public

A modern, data-oriented C++20 game engine featuring a fiber-based job system and a bindless Vulkan 1.3 renderer.

Notifications You must be signed in to change notification settings

Hekbas/Luth

Repository files navigation

Luth Logo

Build Status Platform Language License Status

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.

Engine Screenshot


Getting Started

Prerequisites

  • 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

  1. Clone the repository + submodules
    git clone --recursive https://github.com/Hekbas/Luth.git
  2. If submodules were skipped, initialize them afterward:
    git submodule init
    git submodule update
  3. Generate project files with Premake:
    Run scripts/setup/setup_windows.bat

Features

  • 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 (.meta files).
    • 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.

Dependencies & Libraries Used

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.