chromium_third_party_angle:基于 OpenGL ES 的图形渲染转换引擎项目

第三方软件angle底层的图形渲染引擎的一部分

分支92Tags1
文件最后提交记录最后更新时间
1 年前
7 个月前
7 个月前
30 天前
3 个月前
30 天前
7 个月前
8 个月前
3 个月前
2 天前
7 个月前
7 个月前
30 天前
7 个月前
7 个月前
7 个月前
1 年前
1 年前
1 年前
3 年前
8 个月前
10 个月前
7 个月前
7 个月前
3 年前
10 个月前
6 年前
7 个月前
5 年前
3 个月前
7 个月前
7 个月前
1 年前
8 年前
11 个月前
7 个月前
9 个月前
7 个月前
1 年前
3 年前
6 年前
1 年前
10 个月前

ANGLE - 近似原生图形层引擎

ANGLE 的目标是让多操作系统用户能够无缝运行 WebGL 和其他 OpenGL ES 内容,其方式是将 OpenGL ES API 调用转换为该平台支持的硬件 API 之一。目前,ANGLE 可将 OpenGL ES 2.0、3.0 和 3.1 转换为 Vulkan、桌面版 OpenGL、OpenGL ES、Direct3D 9 以及 Direct3D 11。未来计划包括支持 ES 3.2、转换到 Metal、支持 MacOS、Chrome OS 和 Fuchsia。

各底层渲染器对 OpenGL ES 的支持程度

Direct3D 9 Direct3D 11 桌面版 GL GL ES Vulkan Metal
OpenGL ES 2.0 完全支持 完全支持 完全支持 完全支持 完全支持 完全支持
OpenGL ES 3.0 完全支持 完全支持 完全支持 完全支持 完全支持
OpenGL ES 3.1 完全支持 完全支持 完全支持
OpenGL ES 3.2 开发中 开发中 完全支持

此外,前端使用 OpenGL ES 3.0 特性实现了 OpenGL ES 1.1。因此,在上述所有支持 OpenGL ES 3.0 的平台上,均支持该版本规范,但存在已知问题

各底层渲染器对平台的支持情况

Direct3D 9 Direct3D 11 桌面版 GL GL ES Vulkan Metal WebGPU
Windows 完全支持 完全支持 完全支持 完全支持 完全支持
Linux 完全支持 完全支持
Mac OS X 完全支持 完全支持 [1]
iOS 完全支持 [2]
Chrome OS 完全支持 计划中
Android 完全支持 完全支持
Fuchsia 完全支持

[1] Metal 在 macOS 10.14 及更高版本上受支持

[2] Metal 在 iOS 12 及更高版本上受支持

2011 年 10 月,ANGLE v1.0.772 通过了 OpenGL ES 2.0.3 一致性测试,获得合规认证。

ANGLE 的 Vulkan 后端已获得以下认证:

  • OpenGL ES 2.0: ANGLE 2.1.0.d46e2fb1e341(2019 年 11 月)
  • OpenGL ES 3.0: ANGLE 2.1.0.f18ff947360d(2020 年 2 月)
  • OpenGL ES 3.1: ANGLE 2.1.0.f5dace0f1e57(2020 年 7 月)
  • OpenGL ES 3.2: ANGLE 2.1.2.21688.59f158c1695f(2023 年 9 月)

ANGLE 还提供 EGL 1.5 规范的实现。

在 Windows 平台上,ANGLE 是 Google Chrome 和 Mozilla Firefox 的默认 WebGL 后端。Chrome 在 Windows 上的所有图形渲染都使用 ANGLE,包括加速的 Canvas2D 实现和 Native Client 沙箱环境。

ANGLE 着色器编译器的部分代码被多个平台的 WebGL 实现用作着色器验证器和转换器。它在 Mac OS X、Linux 以及浏览器的移动版本中均有使用。统一的着色器验证器有助于确保不同浏览器和平台都能接受一致的 GLSL ES 着色器集合。着色器转换器可用于将着色器转换为其他着色语言,并可选择性地对着色器进行修改,以解决原生图形驱动程序中的错误或缺陷。该转换器的目标语言包括桌面版 GLSL、Vulkan GLSL、Direct3D HLSL,甚至原生 GLES2 平台的 ESSL。

OpenCL 实现

除了 OpenGL ES 之外,ANGLE 还在同一个输出 GLES 库中提供了一个可选的 OpenCL 运行时。

此项工作目前仍在进行中/处于实验阶段

这项工作提供了与 OpenGL 实现相同的优势,即 OpenCL API 可被转换为该平台上可用的其他硬件支持的 API。

通过底层渲染器支持的 OpenCL 版本

Vulkan OpenCL
OpenCL 1.0 进行中 进行中
OpenCL 1.1 进行中 进行中
OpenCL 1.2 进行中 进行中
OpenCL 3.0 进行中 进行中

上述每个受支持的底层渲染器最终都会成为用户可选择的 OpenCL Platform

OpenCL 后端是一种“直通”实现,它根本不执行任何 API 转换,而是将 API 调用转发到其他 OpenCL 驱动程序/实现。

OpenCL 还包含一个在线编译器组件,用于在运行时编译 OpenCL C 源代码(类似于 GLES 和 GLSL)。根据所选的后端,编译器实现可能会有所不同。以下是渲染器列表以及每个渲染器使用的 OpenCL C 编译器实现:

  • Vulkanclspv
  • OpenCL:编译器是原生驱动程序的一部分

源代码

ANGLE 代码库由 Chromium 项目托管,可以通过 在线浏览 或使用以下命令克隆:

git clone https://chromium.googlesource.com/angle/angle

构建

请查看 开发环境设置说明

贡献

项目介绍

第三方软件angle底层的图形渲染引擎的一部分

定制我的领域