Metal
コンピュートシェーダー

OpenGL コア

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

OpenGL コアの有効化

To set OpenGL Core as your default Graphics API in the Editor or Standalone Player, go to the Player settings (menu: Edit > Project Settings, then select the Player category), and navigate to Other Settings. Disable the Auto Graphics API for Windows property, and choose OpenGLCore from the list. For more details, see [Graphics API support](Graphics APIs).

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 can be 20, 30, 31, 31aep or 3.2; each number representing a specific version of OpenGL ES. If the platform doesn’t support a specific version of OpenGL ES, Unity will fallback to a supported version. If the platform doesn’t support OpenGL ES, Unity will fallback to another graphics API.
  • -force-clamped: Unity が OpenGL 拡張を使用しないよう要求し、複数のプラットフォームが同じコードパスを確実に実行できるようにします。これは、ある問題がプラットフォーム特有のもの (ドライバのバグなど) かをテストする方法の 1つです。

Metal
コンピュートシェーダー