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
- 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).
| 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 |
- 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)
| Library | Description | License |
|---|---|---|
| GLFW3 | Window Management | zlib/libpng |
| stb_image | Image Loading | MIT |