Version: 2023.1
言語: 日本語
Metal グラフィックスの最適化
グラフィックスのパフォーマンスとプロファイリング

OpenGL コア

OpenGL コアは、Windows、MacOS X、Linux で最新の OpenGL 機能をサポートするバックエンド機能です。Open GL ドライバーサポートによって、OpenGL 3.2 から OpenGL 4.5 まであります。

OpenGL コアの有効化

エディター、または、スタンドアロンプレイヤーでデフォルトのグラフィックス API として DirectX11 を設定するには、Player 設定 (Edit> Project Settings メニューから Player カテゴリを選択) に移動し、Other Settings に移動します。Auto Graphics API for Windows のチェックを外し、リストから OpenGLCore を選択します。詳細については、グラフィックス API のサポート を参照してください。

OpenGL 要件

OpenGL コアには以下の最低要件があります。

  • Mac OS X 10.8 (OpenGL 3.2)、MacOSX 10.9 (OpenGL 3.2 から 4.1)

  • 以下を登載の Windows - 2006 年以降の NVIDIA (GeForce 8)、2006 年以降の AMD (Radeon HD 2000)、2012 年以降の Intel (HD 4000/IvyBridge) (OpenGL 3.2 から OpenGL 4.5)

  • Linux (OpenGL 3.2 から OpenGL 4.5)

macOS OpenGL ドライバー制限

エディターとスタンドアロン用の macOS の OpenGL バックエンドはテッセレーションシェーダーやジオメトリシェーダーなどの OpenGL 3.x と 4.x の機能をサポートします。

ただし、Apple が OS X デスクトップ上の OpenGL バージョン を最大で 4.1 までと制限したため、すべての DirectX 11 機能 (Unordered Access Views や コンピュートシェーダーなど) に対応しているわけではありません。つまり、シェーダーレベル 5.0 ( #pragma target 5.0を伴う) に対応するように設定しているすべてのシェーダーは OS X でロードできないということです。

したがって、新しいシェーダーの対象レベルを導入:#pragma target gl4.1. この対象レベルは、少なくともデスクトップ上で OpenGL 4.1 や DirectX 11.0 Shader Level 5、あるいは、モバイル向けで OpenGL ES 3.1 + Android Extension Pack が必要です。

OpenGL コア機能

新しい OpenGL バックエンドは多くの新しい機能 (以前は、その機能のほとんどは DX11/GLES3 だけに可能) を備えています。

  • コンピューターシェーダー (ComputeBuffers と「Random Write」レンダーテクスチャ同様)
  • テッセレーション と ジオメトリシェーダー
  • 間接描画 (Graphics.DrawProcedural と Graphics.DrawProceduralIndirect)
  • アドバンスドブレンドモード

シェーダー変更

既存の #pragma ターゲットを使用する場合、以下の GL レベルにマップされます。

  • #pragma target 4.0 // OpenGL ES 3.1、デスクトップ OpenGL 3.x、DX シェーダーモデル 4.0
  • #pragma target gl4.1 // デスクトップ OpenGL 4.1、SM 4.0 + テッセレーションして MacOSX 10.9 に合わせます。
  • #pragma target 5.0 // OpenGL ES 3.1 + Android Extension Pack、デスクトップ OpenGL >= 4.2、DX シェーダーモデル 5.0

シェーダープラットフォームがある特定のシェーダーを使用できるようにしたり、できなくしたりするために、以下の #pragma only_renderers / exclude_renderers ターゲットを使用します。

  • #pragma only_renderers glcore: デスクトップ GL のコンパイルだけを行います。ES 3 ターゲットのように、これもすべてのデスクトップ GL バージョンを含むように設定されています。基本シェーダーは GL 2.x に対応しますが、SM5.0 機能を要するシェーダーには OpenGL 4.2+ が必要です。

OpenGL コアプロファイル コマンドライン引数

コマンドライン引数を使用して、OpenGL によるエディターやプレイヤーを始動することが可能です。

  • -force-opengl: 古い OpenGL バックエンドを使用します。
  • -force-glcore: 新しい OpenGL バックエンドを使用します。この引数を使うと、Unity はそのプラットフォームに最適な OpenGL バージョンと可能な OpenGL 拡張すべてを使用して対応できる全機能を検知します。
  • -force-glcoreXY: XY は 32、33、40、41、42、43、44、45。各数字は OpenGL の特定のバージョンを示します。プラットフォームが特定の Open GL バージョンに対応しない場合、Unity は対応できるバージョンに戻します。
  • -force-clamped: Unity が OpenGL 拡張を使用しないよう要求し、複数のプラットフォームが同じコードパスを確実に実行できるようにします。これは、ある問題がプラットフォーム特有のもの (ドライバのバグなど) かをテストする方法の 1つです。

ネイティブのデスクトップ OpenGL ES コマンドライン引数

OpenGL ES グラフィックス API は、OpenGL ES 対応のドライバ付きの、Intel か NVIDIA GPU 搭載 Windows マシンで可能です。

  • -force-gles: 新しい OpenGL バックエンドを OpenGL ES モードで使用します。この引数を使用すると、Unity はそのプラットフォームに最適な OpenGL ES バージョンと可能な OpenGL ES 拡張すべてを使用して対応できる全機能を検知します。
  • -force-glesXY: XY は 20、30、31、31aep、3.2。各番号は OpenGL ES の特定のバージョンを表します。プラットフォームが OpenGL ES の特定のバージョンをサポートしない場合、Unity はサポートされているバージョンにフォールバックします。プラットフォームが OpenGL ES をサポートしない場合、Unity は別のグラフィックス API にフォールバックします。
  • -force-clamped: Unity が OpenGL 拡張を使用しないよう要求し、複数のプラットフォームが同じコードパスを確実に実行できるようにします。これは、ある問題がプラットフォーム特有のもの (ドライバのバグなど) かをテストする方法の 1つです。

  • 2018–06–02 修正されたページ
Metal グラフィックスの最適化
グラフィックスのパフォーマンスとプロファイリング