Skip to content

RavEngine/RGL

Repository files navigation

RGL

RavEngine Graphics Library - a thin RHI for Vulkan, DirectX12, and Metal

Features

  • Write shaders in Vanilla GLSL - no macro hacks or custom DSL
  • Transpiled shaders retain information in debug, for easier shader source debugging
  • Easy-to-understand Metal-like API that maintains the conventions of modern graphics APIs
  • Low overhead
    • most calls map directly to their platform-specific counterparts
    • If only one backend is enabled (default for Apple platforms), all virtual function calls dissapear
  • Runtime shader compilation via compiler library
  • Automatically-managed resource barriers (when using Vulkan or DX12)

What it is not

  • A game engine. See RavEngine if that is what you are looking for.
  • A windowing / input library. See the code samples for an example that integrates with SDL2.
  • Production-ready. Use at your own risk.
  • For beginners. Users should be familiar with at least one other modern graphics API.

Supported Platforms

  • macOS (intel + Apple silicon)
  • iOS (device only)
  • tvOS (device only)
  • Windows 10+ (Arm64 + x86_64)
  • Windows 10+ UWP (Arm64 + x86_64)
  • Linux
  • Android (x86, x86_64, arm, arm64)
  • WebAssembly (WIP)

Getting Started

See RavEngine/RGL-Samples for code samples. To compile the library, use CMake:

# ...
add_subdirectory(path/to/RGL)
# ...
target_link_libraries(your_program PUBLIC rgl)