ANGLE (software)

Last updated

ANGLE
Developer(s) Google
Repository
Written in C++
Platform Cross-platform
Type Graphics engine
License BSD 3-Clause License
Website angleproject.org

ANGLE (Almost Native Graphics Layer Engine) is an open source, cross-platform graphics engine abstraction layer developed by Google. [1] ANGLE translates OpenGL ES 2/3 calls to DirectX 9, 11, OpenGL or Vulkan API calls. [2] [3] [4] [5] It's a portable version of OpenGL but with limitations of OpenGL ES standard. [6] [7]

Contents

The API is mainly designed to bring up a high-performance OpenGL compatibility to MS Windows and to web browsers such as Chromium by translating OpenGL calls to Direct3D, which has much better driver support on Windows systems. [3] [4] [5] On Windows, there are two backend renderers for ANGLE: the oldest one uses Direct3D 9.0c, while the newer one uses Direct3D 11. [8]

ANGLE is currently used by Google Chrome (embedded into the Blink browser engine), Firefox, [9] Edge, WebKit, and the Qt Framework. [10] The engine is also used by Windows 10 for compatibility with apps ported from Android. [11] Throughout 2019, the Apple team contributed a Metal API backend for the ANGLE so Apple devices could run on their native graphics APIs. [12]

ANGLE is distributed under a BSD-license.

History

The project started as a way for Google to bring full hardware acceleration for WebGL to Windows without relying on OpenGL graphics drivers. Google initially released the program under the BSD license. [13]

The current production version (2.1.x) implements OpenGL ES 2.0, 3.0, 3.1 and EGL 1.5, claiming to pass the conformance tests for both. Work was started on then future OpenGL ES 3.0 version, [8] for the newer Direct3D 11 backend. [14]

The capability to use ANGLE in a Windows Store app was added in 2014. [11] Microsoft contributed support for lower feature levels to the project. Supporting CoreWindow and SwapChainPanel in ANGLE's EGL allows applications to run on Windows 8.1, Windows Phone 8.1, and later. [15]

Level of OpenGL ES support via backing renderers

Direct3D 9Direct3D 11Desktop GLGL ESVulkanMetal
OpenGL ES 2.0completecompletecompletecompletecompletecomplete
OpenGL ES 3.0completecompletecompletecompletecomplete
OpenGL ES 3.1incompletecompletecompletecomplete
OpenGL ES 3.2in progressin progresscomplete
Direct3D 9Direct3D 11Desktop GLGL ESVulkanMetal
Windows completecompletecompletecompletecomplete
Linux completecomplete
macOS completecomplete
iOS complete
ChromeOS completePlanned
Android completecomplete
GGP (Stadia) complete
Fuchsia complete

Software utilizing ANGLE

ANGLE is currently used in a number of programs and software.

Related Research Articles

<span class="mw-page-title-main">OpenGL</span> Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware acceleration if it is available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z-buffering, W-buffering, stencil buffering, spatial anti-aliasing, alpha blending, color blending, mipmapping, texture blending, clipping, culling, atmospheric effects, perspective-correct texture mapping, programmable HLSL shaders and effects. Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties.

WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as all web browsers on iOS and iPadOS. WebKit is also used by the PlayStation consoles starting with the PS3, the Tizen mobile operating systems, the Amazon Kindle e-book reader, Nintendo consoles starting with the 3DS Internet Browser, and the discontinued BlackBerry Browser. WebKit's C++ application programming interface (API) provides a set of classes to display Web content in windows, and implements browser features such as following links when clicked by the user, managing a back-forward list, and managing a history of pages recently visited.

Direct3D and OpenGL are both application programming interfaces (APIs) that can be used in applications to render 2D and 3D computer graphics. As of 2005, graphics processing units (GPUs) almost always implement one version of both of these APIs. Examples include: DirectX 9 and OpenGL 2 circa 2004; DirectX 10 and OpenGL 3 circa 2008; and most recently, DirectX 11 and OpenGL 4 circa 2011. GPUs that support more recent versions of the standards are backwards compatible with applications that use the older standards; for example, one can run older DirectX 9 games on a more recent DirectX 11-certified GPU.

The Khronos Group, Inc. is an open, non-profit, member-driven consortium of 170 organizations developing, publishing and maintaining royalty-free interoperability standards for 3D graphics, virtual reality, augmented reality, parallel computation, vision acceleration and machine learning. The open standards and associated conformance tests enable software applications and middleware to effectively harness authoring and accelerated playback of dynamic media across a wide variety of platforms and devices. The group is based in Beaverton, Oregon.

Cairo (graphics) Vector graphics-based software library

Cairo is an open-source graphics library that provides a vector graphics-based, device-independent API for software developers. It provides primitives for two-dimensional drawing across a number of different backends. Cairo uses hardware acceleration when available.

<span class="mw-page-title-main">OpenGL ES</span> Subset of the OpenGL API for embedded systems

OpenGL for Embedded Systems is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accelerated using a graphics processing unit (GPU). It is designed for embedded systems like smartphones, tablet computers, video game consoles and PDAs. OpenGL ES is the "most widely deployed 3D graphics API in history".

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

<span class="mw-page-title-main">OpenGL Shading Language</span> High-level shading language

OpenGL Shading Language (GLSL) is a high-level shading language with a syntax based on the C programming language. It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use ARB assembly language or hardware-specific languages.

A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and running on the CPU, common in embedded systems, or being hardware accelerated by a GPU, more common in PCs. By employing these functions, a program can assemble an image to be output to a monitor. This relieves the programmer of the task of creating and optimizing these functions, and allows them to focus on building the graphics program. Graphics libraries are mainly used in video games and simulations.

Web3D, also called 3D Web, is a group of technologies to display and navigate websites using 3D computer graphics.

<span class="mw-page-title-main">Skia Graphics Engine</span> Open source graphics library written in C++

The Skia Graphics Engine or Skia is an open-source 2D graphics library written in C++. Skia abstracts away platform-specific graphics APIs. Skia Inc. originally developed the library; Google acquired it in 2005, and then released the software as open source licensed under the New BSD free software license in 2008.

<span class="mw-page-title-main">WebGL</span> JavaScript bindings for OpenGL in web browsers

WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.

<span class="mw-page-title-main">EGL (API)</span> Application programming interface

EGL is an interface between Khronos rendering APIs and the underlying native platform windowing system. EGL handles graphics context management, surface/buffer binding, rendering synchronization, and enables "high-performance, accelerated, mixed-mode 2D and 3D rendering using other Khronos APIs." EGL is managed by the non-profit technology consortium Khronos Group.

<span class="mw-page-title-main">Mantle (API)</span> Low-overhead rendering API

Mantle was a low-overhead rendering API targeted at 3D video games. AMD originally developed Mantle in cooperation with DICE, starting in 2013. Mantle was designed as an alternative to Direct3D and OpenGL, primarily for use on personal computers, although Mantle supports the GPUs present in the PlayStation 4 and in the Xbox One. In 2015, Mantle's public development was suspended and in 2019 completely discontinued, as DirectX 12 and the Mantle-derived Vulkan rose in popularity.

Vulkan is a low-level low-overhead, cross-platform API and open standard for 3D graphics and computing. It was intended to address the shortcomings of OpenGL, and allow developers more control over the GPU. It is designed to support a wide variety of GPUs, CPUs and operating systems, it is also designed to work with modern multi-core CPUs.

glTF 3D scene and model file format

glTF is a standard file format for three-dimensional scenes and models. A glTF file uses one of two possible file extensions: .gltf (JSON/ASCII) or .glb (binary). Both .gltf and .glb files may reference external binary and texture resources. Alternatively, both formats may be self-contained by directly embedding binary data buffers. An open standard developed and maintained by the Khronos Group, it supports 3D model geometry, appearance, scene graph hierarchy, and animation. It is intended to be a streamlined, interoperable format for the delivery of 3D assets, while minimizing file size and runtime processing by apps. As such, its creators have described it as the "JPEG of 3D."

WebGPU is a JavaScript API provided by a web browser that enables webpage scripts to efficiently utilize a device's graphics processing unit (GPU). This is achieved with the underlying Vulkan, Metal, or Direct3D 12 system APIs. On relevant devices, WebGPU is intended to supersede the older WebGL standard.

References

  1. "Google Announces Angle – Almost Native Graphics Layer Engine – so OpenGL ES can run over DirectX 9 – khronos.org news". Khronos.org. 19 March 2010. Retrieved 5 August 2014.
  2. "ANGLE". Skia. Retrieved 11 April 2022.
  3. 1 2 "Google's Angle brings OpenGL to Windows". I-programmer.info. 13 December 2011. Retrieved 5 August 2014.
  4. 1 2 "Chromium gets GPU acceleration – The H Open: News and Features". H-online.com. 30 August 2010. Retrieved 5 August 2014.
  5. 1 2 Bridge, Henry (18 March 2010). "Chromium Blog: Introducing the ANGLE Project". Blog.chromium.org. Retrieved 5 August 2014.
  6. "angle/angle - Git at Google". chromium.googlesource.com. Retrieved 8 July 2021.
  7. ANGLE: OpenGL on Vulkan , retrieved 8 July 2021
  8. 1 2 3 "angleproject – ANGLE: Almost Native Graphics Layer Engine – Google Project Hosting". 25 March 2014. Retrieved 5 August 2014.
  9. 1 2 3 "(WebGL) How to Enable Native OpenGL in your Browser (Windows)". Geeks3D. Retrieved 5 August 2014.
  10. 1 2 "Graphics on Windows from a different angle | Qt Blog". Qt. Retrieved 5 August 2014.
  11. 1 2 3 4 "ANGLE: Running OpenGL ES 2.0 Graphics Code on Windows". channel9.msdn.com. 30 April 2015.
  12. 1 2 "WebGL 2.0 Achieves Pervasive Support from all Major Web Browsers". The Khronos Group. 9 February 2022. Retrieved 13 February 2022.
  13. Shankland, Stephen (25 March 2014). "Google aims for easier 3D Web on Windows – CNET". News.cnet.com. Retrieved 5 August 2014.
  14. https://angleproject.googlecode.com/files/ANGLE%20and%20Cross-Platform%20WebGL%20Support.pdf Archived 11 August 2014 at the Wayback Machine .
  15. "ANGLE for Windows Store Wiki". Microsoft Corp.
  16. "Dev snapshot: Godot 4.2 dev 6".
  17. https://github.com/godotengine/godot/pull/72831
  18. "ANGLE for Windows Store – NuGet Package". www.nuget.org. 29 May 2015.
  19. "FAQ #2570 : Questions : Stellarium". answers.launchpad.net.
  20. VideoGameCredits (27 June 2014). "Shovel Knight (Credits) (PC)" via YouTube.
  21. Jagex. "Dev Blog - NXT - Can I Run It? - News - RuneScape". services.runescape.com.
  22. Foundation, Krita (28 September 2017). "Krita 3.3.0 - Krita". krita.org.
  23. Chote, Paul (31 January 2021). "Playtest 20210131". OpenRA .