ANGLE - Almost Native Graphics Layer Engine
Introduction to ANGLE
ANGLE, which stands for "Almost Native Graphics Layer Engine," is a vital tool designed to help users run WebGL and other OpenGL ES content effortlessly across different operating systems. It achieves this by translating OpenGL ES API calls into one of the supported hardware rendering APIs available on the user's platform. These supported renderers include Vulkan, desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. In the future, ANGLE plans to include support for OpenGL ES 3.2, translation to Metal and compatibility with MacOS, Chrome OS, and Fuchsia.
Supported OpenGL ES Versions
ANGLE provides robust translation capabilities for various OpenGL ES versions via its backing renderers:
- OpenGL ES 2.0: Full support across all platforms.
- OpenGL ES 3.0: Fully supported across platforms except Direct3D 9.
- OpenGL ES 3.1: Incomplete for Direct3D 11 but complete on others.
- OpenGL ES 3.2: Work is ongoing for desktop GL and GL ES, but fully supported on Vulkan.
OpenGL ES 1.1 is implemented using OpenGL ES 3.0 features, ensuring functionality on any platform supporting OpenGL ES 3.0 with some known issues.
Platform Support
ANGLE is committed to ensuring broad platform support via its backing renderers:
- Windows: Complete support across all renderers.
- Linux: Complete support is available with desktop GL and Vulkan.
- Mac OS X/iOS: Metal provides complete support.
- Chrome OS: Planning for Vulkan support.
- Android: Fully supported with OpenGL ES and Vulkan.
- GGP (Stadia) and Fuchsia: Vulkan support is complete.
ANGLE also implements the EGL 1.5 specification and serves as the default WebGL backend for Google Chrome and Mozilla Firefox on Windows. It is essential for graphics rendering in Chrome, including the accelerated Canvas2D and Native Client sandbox environments.
Shader Compiler
Parts of the ANGLE shader compiler are utilized by WebGL implementations across multiple platforms. They help ensure consistent GLSL ES shader acceptance across browsers. The shader translator facilitates translation into various shading languages and can apply modifications to address bugs in native graphics drivers.
OpenCL Implementation
ANGLE extends its functionality with an experimental OpenCL runtime. This feature translates OpenCL APIs to other hardware-supported APIs. The OpenCL support is in progress for multiple versions and uses a "passthrough" backend, forwarding API calls directly to other OpenCL implementations.
Contributions and Community
The ANGLE project is more than just code; it's a community-driven effort. Contributors can engage via Google groups or Slack channels and participate by filing bugs or tracking project branches for their developments. The source code is accessible through the Chromium project's repositories.
ANGLE's documentation provides a comprehensive guide for developers, including setup instructions, debugging tips, orientation presentations, and more. It is a continuously evolving project, with updates and improvements led by its active community of developers.
In essence, ANGLE is a cornerstone technology that underpins the seamless operation of OpenGL ES content across diverse platforms, driving consistent and efficient graphics rendering for applications worldwide.