Unity のビルトインのレンダーパイプラインはさまざまなレンダリングパスをサポートしています。レンダリングパスは、ライティングとシェーディングに関連する一連の操作です。レンダリングパスが異なると、機能とパフォーマンス特性も異なります。どのレンダリングパスがプロジェクトに最も適しているかは、プロジェクトのタイプとターゲットハードウェアによって異なります。
Graphics (グラフィックス) ウィンドウでプロジェクトに使用するレンダリングパスを選択し、カメラごとにそのパスをオーバーライドできます。
プロジェクトを実行するデバイスの GPU がユーザーの選択したレンダリングパスをサポートしない場合、Unity は自動的に忠実度の低いレンダリングパスを使用します。例えば、ディファードシェーディングを処理できない GPU では、Unity はフォワードレンダリングを使用します。
フォワードレンダリングは、ビルトインレンダーパイプラインのデフォルトで、汎用のレンダリングパスです。
リアルタイムのライトは、フォワードレンダリングで描画するには非常に負荷がかかります。このコストを相殺するために、Unity が一度にピクセルごとにレンダリングするライトの数を選択できます。シーンの残りのライトは、頂点ごと、またはオブジェクトごとなど、より低い忠実度で描画されます。
プロジェクトで大量のリアルタイムライトを使用しない場合、またはライティングの忠実度がプロジェクトにとって重要でない場合は、このレンダリングパスがプロジェクトに適していると考えて良いでしょう。
詳しくは フォワードレンダリングパス を参照してください。
ディファードシェーディングは、ビルトインレンダーパイプラインで最もライトと影の忠実度が高いレンダリングパスです。
ディファードシェーディングは GPU サポートを必要とし、いくつかの制限があります。半透明のオブジェクト (Unity はフォワードレンダリングを使用)、平行投影 (Unity はカメラにフォワードレンダリングを使用)、ハードウェアのアンチエイリアス (ポストプロセスエフェクトを使用して同様の結果を得られます) をサポートしません。カリングマスクのサポートに制限があり、Renderer.receiveShadows フラグを常に true として扱います。
プロジェクトに多数のリアルタイムのライトがあり、高いレベルのライティングの忠実度が必要で、ターゲットハードウェアがディファードシェーディングをサポートしている場合、このレンダリングパスはプロジェクトに適しています。
このレンダリングパスの制限を含む詳細は、ディファードシェーディングレンダリングパスのページを参照してください。
古い Vertex Lit (頂点ライト) はライティングの忠実度が最も低いレンダリングパスで、リアルタイムの影をサポートしません。これは、フォワードレンダリングパスのサブセットです。
詳しくは Vertex Lit レンダリングパス を参照してください。
ディファード | フォワード | 頂点ライト | |
---|---|---|---|
機能 | |||
パーピクセルライト (法線マップ、ライトクッキー) | 可 | 可 | - |
リアルタイムシャドウ | 可 | 警告あり | - |
リフレクションプローブ | 可 | 可 | - |
深度 & 法線バッファ | 可 | 追加のレンダリングパス | - |
ソフトパーティクル | 可 | - | - |
半透明オブジェクト | - | 可 | 可 |
アンチエイリアス | - | 可 | 可 |
ライトカリングマスク | Limited | 可 | 可 |
ライトの厳密さ | すべてのピクセル | 一部のピクセル | すべての頂点 |
パフォーマンス | |||
1 ピクセルあたりのライトのコスト | ライトが当たる pixel の数 | ライトが当たるピクセル数*オブジェクトの数 | - |
通常レンダリングされるオブジェクトの個数 | 1 | ピクセル単位のライトの数 | 1 |
簡易なシーンのオーバーヘッド | 高 | なし | なし |
サポートするプラットフォーム | |||
PC (Windows/Mac) | Shader Model 3.0+ & MRT | すべて | すべて |
モバイル (iOS/Android) | OpenGL ES 3.0 & MRT, Metal | すべて | すべて |
コンソール | XB1、PS4 | すべて | - |