Git Product home page Git Product logo

rgl's Introduction

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)

rgl's People

Contributors

ravbug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rgl's Issues

[D3D12] Efficiency: collapse barriers

Currently, the D3D12 backend does not collapse ResourceBarrier commands. This is inefficient.
image
CommandBufferD3D12 handles all barrier usage automatically. We may want to consider an approach similar to what CommandBufferVk does in order to satisfy Vulkan's (more strict) barrier rules.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.