{"id":13533183,"url":"https://github.com/facebook/igl","last_synced_at":"2025-04-29T14:30:19.738Z","repository":{"id":179511454,"uuid":"663573391","full_name":"facebook/igl","owner":"facebook","description":"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).","archived":false,"fork":false,"pushed_at":"2025-04-25T03:50:48.000Z","size":18700,"stargazers_count":3054,"open_issues_count":3,"forks_count":183,"subscribers_count":57,"default_branch":"main","last_synced_at":"2025-04-25T04:33:01.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-07T15:57:14.000Z","updated_at":"2025-04-25T03:50:52.000Z","dependencies_parsed_at":"2024-11-06T05:17:01.752Z","dependency_job_id":"a518502f-0c97-4774-84cb-7cf900fc33d4","html_url":"https://github.com/facebook/igl","commit_stats":{"total_commits":1608,"total_committers":94,"mean_commits":"17.106382978723403","dds":0.7381840796019901,"last_synced_commit":"852cb9d90cd58534b0e4858d043a766673a455d8"},"previous_names":["facebook/igl"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Figl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Figl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Figl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Figl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/igl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251518668,"owners_count":21602190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:01:17.338Z","updated_at":"2025-04-29T14:30:19.705Z","avatar_url":"https://github.com/facebook.png","language":"C++","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/facebook/igl/blob/main/.github/igl-full-color-white.svg?raw=true\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://github.com/facebook/igl/blob/main/.github/igl-full-color-black.svg?raw=true\"\u003e\n    \u003cimg alt=\"IGL Logo\" src=\".github/igl-full-color-black.svg\" width=\"500\"\u003e\n  \u003c/picture\u003e\n\n  [![Build Status](https://github.com/facebook/igl/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/facebook/igl/actions)\n\n\u003c/div\u003e\n\nIntermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It encapsulates\ncommon GPU functionality with a low-level cross-platform interface. IGL is designed to support multiple\nbackends implemented on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan) with a common interface.\n\nThere are a lot of good options for abstracting GPU API's; each making different trade-offs. We designed IGL around the following priorities:\n\n1. *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).\n2. *Minimal overhead for C++.* IGL supports new or existing native rendering code without overhead of language interop or the need for other language runtimes.\n3. *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.\n\n## Supported rendering backends\n\n * Metal 2+\n * OpenGL 2.x (requires [GL_ARB_framebuffer_object](https://registry.khronos.org/OpenGL/extensions/ARB/ARB_framebuffer_object.txt))\n * OpenGL 3.1+\n * OpenGL ES 2.0+\n * Vulkan 1.1\n * WebGL 2.0\n\n## Supported platforms\n\n * Android\n * iOS\n * Linux\n * macOS\n * Windows\n * WebAssembly\n\n## API Support\n\n|                          | Windows                    | Linux                      | macOS                         | iOS                           | Android                            |\n| ------------------------ | -------------------------- | -------------------------- | ----------------------------- | ----------------------------- | ---------------------------------- |\n| Vulkan 1.1               | :heavy_check_mark:         | :heavy_check_mark:         | :heavy_check_mark: (MoltenVK) | :heavy_multiplication_x:      | :heavy_check_mark: (Quest 2/3/Pro) |\n| OpenGL ES 2.0 - 3.0      | :heavy_check_mark: (Angle) | :heavy_check_mark: (Angle) | :heavy_multiplication_x:      | :heavy_check_mark:            | :heavy_check_mark:                 |\n| OpenGL ES 3.1 - 3.2      | :heavy_check_mark: (Angle) | :heavy_check_mark: (Angle) | :heavy_multiplication_x:      | :heavy_multiplication_x:      | :heavy_check_mark:                 |\n| OpenGL 3.1 - 4.6         | :heavy_check_mark:         | :heavy_check_mark:         | :heavy_check_mark:            | :heavy_multiplication_x:      | :heavy_multiplication_x:           |\n| Metal 2                  | :heavy_multiplication_x:   | :heavy_multiplication_x:   | :heavy_check_mark:            | :heavy_check_mark:            | :heavy_multiplication_x:           |\n\n## Build\n\nBefore building, run the deployment scripts:\n\n```\npython3 deploy_content.py\npython3 deploy_deps.py\n\n```\n\nThese scripts download external third-party dependencies. Please check [Dependencies](./LICENSE.md) for the full list.\n\n* Windows\n\n```\ncd build\ncmake .. -G \"Visual Studio 17 2022\"\n```\n\n* Linux\n\n```\nsudo apt-get install clang xorg-dev libxinerama-dev libxcursor-dev libgles2-mesa-dev libegl1-mesa-dev libglfw3-dev libglew-dev libstdc++-12-dev\ncd build\ncmake .. -G \"Unix Makefiles\"\n```\n\n* macOS\n\n```\ncd build\ncmake .. -G \"Xcode\" -DIGL_WITH_VULKAN=OFF\n```\n\n* iOS\n\n```\ncd build\ncmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../third-party/deps/src/ios-cmake/ios.toolchain.cmake -DDEPLOYMENT_TARGET=13.0 -DPLATFORM=OS64\n```\n\n* Android\n\nThe Gradle project is located within the [build/android](./build/android/) folder.\n\n* WebAssembly\n\nPlease install [Emscripten](https://emscripten.org/docs/getting_started/downloads.html) and [Ninja](https://ninja-build.org/).\n\n```\ncd build\nemcmake cmake .. -G Ninja\ncmake --build .\n```\n\n## Screenshots\n\n![image](.github/screenshot01.png)\n\n![image](.github/screenshot02.png)\n\n## License\n\nIGL is released under the MIT license, see [LICENSE.md](./LICENSE.md) for the full text as well as third-party library\nacknowledgements. SparkSL Compiler is released under the SparkSL Compiler License, see [LICENSE](https://github.com/facebook/igl/releases/download/SparkSL/SparkSL.LICENSE) for full text.\n","funding_links":[],"categories":["C++","ComputerGraphics \u0026\u0026 Shadingv","Libraries"],"sub_categories":["Google Analytics","C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Figl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Figl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Figl/lists"}