Available under the MIT license, Meta (as in Facebook) have released IGL (Intermediate Graphics Library) for developers. This was officially announced on The Khronos Group blog (who oversee various open standards), written by Meta developers.
Supporting OpenGL, OpenGL ES, WebGL, Vulkan and Metal and it's cross-platform for Android, iOS, Linux, macOS, Windows and WebAssembly. They hope to see developers using it across the industry whether you're "working on a game, a 3D modeling application or any other project that requires top-notch graphics" they say that "IGL has got you covered".
Key features of Meta's IGL:
- Cross-platform compatibility: In addition to the functionality mentioned above, IGL also provides a shell library, allowing users to compile and run on the most popular platforms including Windows, Linux, Mac OS, iOS, Android and WebAssembly.
- High-performance rendering: IGL is optimized to provide lightning-fast rendering, even when dealing with complex and detailed graphics.
- Easy-to-use API: An intuitive and easy-to-use API means that IGL is simple and straightforward to work with. Rather than introducing RHI as part of the high-level engine abstraction or mimicking one graphics interface behind another, IGL takes a new approach to abstracting RHI by creating a new modern interface, which is close to Vulkan or WebGPU on the abstraction layer, but general enough to avoid being engine-specific.
- Extensibility: IGL was built with extensibility in mind, allowing users to easily add new features and functionality as their needs evolve.
- Open source: IGL is completely open source and can be used for any project, commercial or otherwise, without any licensing restrictions.
They have an interesting roadmap of what they hope to bring to it too including a multi-threading API, asynchronous loading of resources, a synchronization primitives API and more. Going by the GitHub page they say it has already been "battle-tested" used with Android, Quest 2 / 3 / Pro with OpenGL / Vulkan and their own apps.
You can find it on GitHub.
Quoting: BoldosUmmm.... Why?
Umm, Meta, that's why. Because they are your favourite company.
(I just could not leave this thread alone without saying something sarcastic about them :-)
I agree we don't need yet another silly light weight GL implementation too though (and this is mostly for web use in mind). We've already got EGL in mesa.
P.S. Zink is getting better too, such that some vendors are implementing as their primary OpenGL driver.
Last edited by Grogan on 8 July 2023 at 5:53 pm UTC
Doesn't sound that bad, though.
Quoting: BoldosUmmm.... Why?
I presume to ensure Occulus Quest compatibility on as many devices as possible - they will be selling something down the line, for sure.
QuoteIGL is optimized to provide lightning-fast rendering
Translation: The scope of the project isn't that robust yet. Also -- we made trade-offs to make it go brrrrrr.
QuoteRather than [...] abstraction or mimicking one graphics interface [which everyone already knows] [...] [we made] a new modern interface
Translation: We made a new wheel, idk coz its fun? or benefits Facebook's future ambitions directly.
QuoteIGL was built with extensibility in mind
Translation: This "lightweight" thing we made is feature incomplete.
QuoteThey have an interesting roadmap of what they hope to bring to it too including a multi-threading API, asynchronous loading of resources, a synchronization primitives API and more.
Liam's last summary sums it up well. They really just have done the preliminary work.
--
To me this like like Google Go Language -- or Apple Metal -- maybe somebody likes those things but I don't see much sense in using these things seriously for anything beyond academic purposes unless you intend to specialize in them or be locked into specific eco-systems (which I don't as I find it unnecessary).
Quoting: Luke_NukemWe already have bgfx and wgpu..
Plus, there's the upcoming 3D rendering APIs in SDL3.
I can't say whether more options are a good thing or not, but a quick look at the roadmap tells me they've come up with Yet Another Shader Language called SparkSL. Why do we need so many shader languages? There's already GLSL, HLSL, WGSL, GodotSL, etc.
See more from me