ANGLE - ほぼネイティブなグラフィックレイヤーエンジン
ANGLEの目標は、OpenGL ES APIコールをそのプラットフォームで利用可能なハードウェアサポートAPIのいずれかに変換することにより、複数のオペレーティングシステムのユーザーがWebGLおよびその他のOpenGL ESコンテンツをシームレスに実行できるようにすることです。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 | Desktop GL | GL ES | Vulkan | Metal | |
---|---|---|---|---|---|---|
OpenGL ES 2.0 | complete | complete | complete | complete | complete | complete |
OpenGL ES 3.0 | complete | complete | complete | complete | in progress | |
OpenGL ES 3.1 | incomplete | complete | complete | complete | ||
OpenGL ES 3.2 | in progress | in progress | in progress |
バックレンダラーによるプラットフォーム対応
Direct3D 9 | Direct3D 11 | Desktop GL | GL ES | Vulkan | Metal | |
---|---|---|---|---|---|---|
Windows | complete | complete | complete | complete | complete | |
Linux | complete | complete | ||||
Mac OS X | complete | in progress | ||||
iOS | in progress | |||||
Chrome OS | complete | planned | ||||
Android | complete | complete | ||||
GGP (Stadia) | complete | |||||
Fuchsia | complete |
ANGLE v1.0.772は、2011年10月にOpenGL ES 2.0.3のコンフォーマンステストに合格し、準拠が証明されています。
ANGLEは、Vulkanバックエンドで以下の認定を受けています。
- OpenGL ES 2.0: ANGLE 2.1.0.d46e2fb1e341 (Nov, 2019)
- OpenGL ES 3.0: ANGLE 2.1.0.f18ff947360d (Feb, 2020)
- OpenGL ES 3.1: ANGLE 2.1.0.f5dace0f1e57 (Jul, 2020)
また、ANGLEはEGL1.5仕様の実装も提供しています。
ANGLEは、Windowsプラットフォーム上のGoogle ChromeとMozilla Firefoxの両方で、デフォルトのWebGLバックエンドとして使用されています。Chromeは、高速化されたCanvas2D実装やNative Clientサンドボックス環境など、Windows上のすべてのグラフィックスレンダリングにANGLEを使用しています。
ANGLE シェーダーコンパイラの一部は、複数のプラットフォームにまたがる WebGL の実装でシェーダー検証およびトランスレータとして使用されています。Mac OS X、Linux、およびブラウザのモバイル版で使用されています。1 つのシェーダバリデータを持つことで、ブラウザやプラットフォーム間で一貫した GLSL ES シェーダのセットを受け入れることができます。シェーダ・トランスレータは、シェーダを他のシェーディング言語に翻訳したり、ネイティブ・グラフィック・ドライバのバグや癖に対処するためにシェーダの修正をオプションで適用したりするために使用できます。トランスレータは、Desktop GLSL、Vulkan GLSL、Direct3D HLSL、およびネイティブGLES2プラットフォーム用のESSLもターゲットにしています。
情報源
ANGLEリポジトリはChromiumプロジェクトによってホストされており、オンラインで閲覧することができます。
git clone https://chromium.googlesource.com/angle/angle
ビルド
Devセットアップ説明書をご覧ください。
貢献
Googleグループに参加し、最新情報を入手することができます。
Slack の #angle チャンネルに参加してください。Slackチャンネルに参加する手順はChromium開発者ページの説明に従ってください。Googler の方は、こちらの ドキュメント の指示に従って、google または chromium のメールを使用して Slack チャンネルに参加してください。
ANGLEブランチの選択を使って、自分のプロジェクトでトラッキングを行うことができます。
ANGLEの開発 ドキュメントを読む。
コードの貢献者になる。
ANGLEのコーディング規約を使用する。
Chromium開発用ANGLEのビルド方法はこちらです。
ANGLEのデバッグのヘルプを取得する。
ANGLEの方向性に目を通し、スタータープロジェクトをふるいにかけてみてください。何か作業を引き受けると決めたら、私たちと連絡が取れるようにコメントを書き、さらに重要なことは、あなた自身をそのバグの「所有者」に設定することです。こうすることで、複数の人が誤って同じ問題に取り組むことを避けることができます。
WebGLについては、Khronos WebGL Wikiでお読みください。
初期のANGLE実装の詳細については、OpenGLインサイト ANGLE(これは最新のANGLE実装詳細ではないため、ここでは歴史的参考としてのみ掲載しています)とこのANGLEプレゼンテーションでご確認ください。
ANGLE実装の過去、現在、未来について、本プレゼンテーションでご紹介しています。
Vulkanバックエンドに関するショートプレゼンテーションをご覧ください。
dEQPテスト適合性を追跡する。
Vulkanバックエンドのデザインドキュメントを読んでください。
ANGLEのテストインフラについて読む
ANGLEの対応拡張子の情報を見る
ANGLEをご自身のプロジェクトで使用された場合、ぜひそのお話をお聞かせください。