Godot レンダラのオプション

Godot は、GLES2 と GLES3 の 2 つのレンダリング エンジンをサポートしています。プロジェクトを開始するときは、GLES2 または GLES3 のどちらかを選択し、可能であれば切り替えないようにしてください。プロジェクトでは、これら 2 つのレンダリング エンジンを行き来できますが、切り替えると追加の移行作業が必要になります。

Android では、この 2 つのレンダラはそれぞれ OpenGL ES 2.0 API と OpenGL ES 3.0 API を使用します。GLES3 レンダラの方が高度な機能を備えていますが、多くの Android デバイスに対応しているのは GLES2 レンダラの方です。また、まったく同じ入力シーンデータからでも、生成される視覚出力がレンダラによってわずかに違ってきます。この違いは、GLES2 レンダラが sRGB 色空間を使用し、GLES3 レンダラが線形色空間を使用するためです。

レンダラの選択

GLES2

GLES2 レンダラは、グラフィック要件があまりない 2D または 3D プロジェクトに最も適しており、ほぼすべてのアクティブな Android デバイスに対応しています。プロジェクトが古いデバイスでの動作を想定しており、それに対応する場合は、GLES2 が最適と考えられます。

Android の GLES2 レンダラには、圧縮テクスチャ形式としてサポートされているのが ETC1 のみであるという重要な制約があります。ETC1 はアルファ チャネルをサポートしていません。他のエンジンでは、回避策として、一方のテクスチャにカラーデータを含むデュアル ETC1 テクスチャを使用し、もう一方のテクスチャにアルファ チャネル データを含むデュアル ETC1 テクスチャを使用できます。Godot はこの作業をしません。Android の GLES2 レンダラを使用するプロジェクトでアルファ チャネルを使う場合は、非圧縮のテクスチャを使用する必要があります。非圧縮テクスチャはメモリを大量に消費し、圧縮テクスチャほどパフォーマンスは低下します。特にリソースが限られている古いデバイスでは、大きな非圧縮テクスチャを使用すると、メモリ制限に達するなど、問題が発生する可能性があります。

GLES2 レンダラでは、高度なレンダリング機能をご利用いただけない場合があります。GLES2 レンダラには次のような制限があります。

  • アクティブなリアルタイム ライトによるパフォーマンス スケーリングの性能が低い。
  • 高解像度範囲、屈折特性、画面空間の反射、画面空間のアンビエント オクルージョンなどのレンダリング機能をサポートしていない。
  • シェーダーの複雑さに制限がある。
  • リアルタイム グローバル イルミネーションのサポートがない。
  • パーティクルの GPU アクセラレーションに対応していない。

GLES3

GLES3 レンダラは、OpenGL ES 3.0 をサポートするアクティブな Android デバイスの約 90% と互換性があります。OpenGL ES 3.0 がサポートされていないのは、アクティブな Android デバイスの中でも最も古いものに限られます。

GLES3 レンダラは OpenGL ES 3.0 デバイスと互換性がありますが、古いデバイスは許容可能なフレームレートで実行される可能性が低いことに注意してください。古いデバイスの一部では、グラフィック ドライバの OpenGL ES 3.0 実装にバグがある場合もあります。Android の GLES3 レンダラでドライバのバグを緩和する方法は限られています。これらは新しいデバイスではほとんど問題になりません。

Android の GLES3 レンダラは、ETC2 テクスチャ圧縮形式をサポートしています。ETC1 とは異なり、ETC2 ではアルファ チャネルがサポートされています。

詳細については、Godot のドキュメント - GLES2 と GLES3 の違いをご覧ください。