Skip to content

SlyFryFrog/Lune

Repository files navigation

Lune

Lune is a work-in-progress game framework for macOS and Linux. It uses Metal on macOS and Vulkan on both macOS and Linux. The library is written in modern C++ and encourages RAII for safer and cleaner code.

Note: Xcode/Xmake can't be used as it currently doesn't support .cppm modules, unlike ninja

Feature Goals

  • Platform independent input and window management system (w/ GLFW).
  • Support for Slang (for cross-platform shaders).
  • Support for compute and graphic-related shaders:
    • Metal compute shaders.
    • Metal vertex and fragment shaders.
    • Vulkan compute shaders.
    • Vulkan vertex and fragment shaders.
  • Load and render 3D meshes (e.g., OBJ, glTF).
  • A simple rendering API that works the same way on all implemented backends.
  • Shader hot-reloading for faster development.
  • Support for multiple render passes per-frame.
  • Legacy support for OpenGL (maybe, maybe not).

Requirements and Dependencies

Tool macOS (26.0+) Linux (Ubuntu 24.04+)
Ninja brew install ninja sudo apt install ninja-build
CMake4.0+ brew install cmake sudo apt install cmake
Clang++-20+ brew install llvm@20 sudo apt install clang-20
Metal Metal 4 N/A
Vulkan Vulkan 1.4 Vulkan 1.4

CMake

Flags

  • LUNE_TESTS: Build tests
  • LUNE_BUILD_SANDBOX: Build the sandbox demo projects
  • LUNE_METAL_ENABLED: Build with Metal (macOS)
  • LUNE_VULKAN_ENABLED: Build with Vulkan (All platforms)

Dependencies

Library Description License
GLFW3 Window Management zlib/libpng
stb_image Image Loading MIT

About

A WIP modern C++ Metal/Vulkan/OpenGL rendering engine/game framework.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published