GitHub - facebook/igl: Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It provides a single low-level cross-platform interface on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan).

GitHub

IGL Logo
IGL Logo

Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It encapsulates common GPU functionality with a low-level cross-platform interface. IGL is designed to support multiple backends implemented on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan) with a common interface.

There are a lot of good options for abstracting GPU API's; each making different trade-offs. We designed IGL around the following priorities:

Low-level, forward-looking API. IGL embraces modern abstractions (command buffers, state containers, bindless, etc) and is designed to give more control than OpenGL's state machine API. As a result, IGL can have leaner backends for modern API's (e.g. Metal, Vulkan).

Minimal overhead for C++. IGL supports new or existing native rendering code without overhead of language interop or the need for other language runtimes.

Reach + scale in production. IGL has been globally battle-tested for broad device reliability (especially the long-tail of Android devices as well as Quest 2/3/Pro compatibility for OpenGL/Vulkan) and performance-tuned on our apps.

Supported rendering backends

Metal 2+

OpenGL 2.x (requires

GL_ARB_framebuffer_object

)

OpenGL 3.1+

OpenGL ES 2.0+

Vulkan 1.2

WebGL 2.0

Supported platforms

Android

iOS

Linux

macOS

Windows

WebAssembly

API Support

WindowsLinuxmacOSiOSAndroidVulkan 1.2✔️✔️✔️ (MoltenVK)✖️✔️ (Quest 2/3/Pro)OpenGL ES 2.0 - 3.0✔️ (Angle)✔️ (Angle)✖️✔️✔️OpenGL ES 3.1 - 3.2✔️ (Angle)✔️ (Angle)✖️✖️✔️OpenGL 3.1 - 4.6✔️✔️✔️✖️✖️Metal 2✖️✖️✔️✔️✖️Build

Before building, run the deployment scripts:

python3 deploy_content.py python3 deploy_deps.py These scripts download external third-party dependencies. Please check

Dependencies

for the full list.

Windows

cd build cmake .. -G "Visual Studio 17 2022" Linux

sudo apt-get install clang xorg-dev libxinerama-dev libxcursor-dev libgles2-mesa-dev libegl1-mesa-dev libglfw3-dev libglew-dev libstdc++-12-dev cd build cmake .. -G "Unix Makefiles" macOS

cd build cmake .. -G "Xcode" -DIGL_WITH_VULKAN=OFF iOS

cd build cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../third-party/deps/src/ios-cmake/ios.toolchain.cmake -DDEPLOYMENT_TARGET=13.0 -DPLATFORM=OS64 Android

The Gradle project is located within the

build/android

folder.

WebAssembly

Please install

Emscripten

and

Ninja

.

cd build emcmake cmake .. -G Ninja cmake --build . Screenshots

image
image
image
image

License

IGL is released under the MIT license, see

LICENSE.md

for the full text as well as third-party library acknowledgements. SparkSL Compiler is released under the SparkSL Compiler License, see

LICENSE

for full text.