Unity を検索

HD レンダーパイプライン:ビジュアル品質に重点を置いたパイプライン

2018年3月16日 カテゴリ: テクノロジー | 10 分 で読めます
取り上げているトピック
シェア

先日のブログ記事では、スクリプタブルレンダーパイプライン(SRP)についてご紹介しました。簡単に言うと SRP とは、Unity がフレームをレンダーする方法をデベロッパーが C# で制御できるようにするものです。Unity 2018.1 にはライトウェイトレンダーパイプラインおよび HD レンダーパイプライン(HD RP)という 2 つのレンダーパイプラインがビルトインで搭載されます。本記事では、このうち HD RP に焦点を当ててお話ししていきます。

HD RP の目的は、高解像度のビジュアルを実現するためのツールをデベロッパーに提供することです。 

このレンダーパイプラインは以下の 3 つのコンセプトを軸に設計されています。

  • 物理ベースレンダリング
  • 一元的、かつ一貫したライティング
  • 特定のレンダリングパスに依存しない機能

物理ベースレンダリングは、ライティング、マテリアル、カメラの 3 つの柱によって成り立っています。ライティングとマテリアルは物理的なインタラクションに基づいており、様々なライティング条件下で一貫した結果を得るためには両者が明確に分離されている必要があります。最終的にライティングが画面上でどのように表示されるかは、カメラを通して決まります。物理ベースレンダリングの目的は、アーティストがより簡単に説得力のある結果を実現できるようにすることにあります。

「一元的なライティング」とは、シーン内で使用されている媒体やオブジェクトのすべてが同じライティングを受けるということです。不透明マテリアル・透明マテリアル・ボリューメトリックマテリアルが一切区別されない状態です。「一貫したライティング」とは、マテリアルが(例えばデカールなどで修正されていても)、光源の種類([例]リフレクションプローブやエリアライトなど)に関わらず、ライティングに対して正しく反応しなければならない事を意味します。これにより、最終的な見た目がより一貫性のあるものになります。

リアルタイムレンダリングで使用されるレンダリングパスは様々です。これには、デファ―ド/フォワード、シングルパス/マルチパス、タイル/クラスターなどが含まれます。ゲーム開発においては、選択したレンダリングパスによってグラフィックスの機能に制約が掛かるのが一般的です。これに対し HD RP は、レンダリングパスの種類に関わらず同じグラフィックス機能を使用可能にすべく開発されました。このため、ゲームに必要な機能を考慮してそれを基にレンダリングパスの選択を行うのではなく、純粋にパフォーマンス面のみを考慮して選択を行えるようになっています。

HD RP は、これらの原則にできる限り沿う形で開発されています。

HD RP は誰のために開発されたか

HD RP は高性能 PC や据え置き機をターゲットにしており、美しい高解像度ビジュアルを実現することに重きを置いています。規模の小さな開発チームでもトップレベルのグラフィックス機能を使用できるようにすることがその目的です。少なくとも DirectX 11 レベルの機能セットを前提としており、コンピュートシェーダーを非常に多用します。これに伴うトレードオフは、HD RP は性能の低いプラットフォームでは機能しないことです。対応のターゲット API は D3D11、D3D12、GNM(PlayStation 4)、Metal および Vulkan です。VR への対応も予定されていますが、現時点で入手可能なプレビュー版には実装されていません。

さらに、HD RP には完全に新しい機能と挙動のセットが搭載されており、これに伴う学習と開発セットアップの再構成が必要となります。プロジェクトを Unity 組み込みのレンダーパイプラインから HD RP へアップグレードするための変換ツールもご提供していますが、これは、マテリアルとテクスチャーの簡単な再設定のみを行うものです。ライティング、ポストプロセッシング、シーン設定、グラフィックス設定、カスタムシェーダーはすべて修正が必要となります。

(例)Viking Village プロジェクトのアップグレード

HD RP は現段階ではプレビュー版であるためプロダクト開発でのご利用はおすすめしません。

ライティングの改良

HD RP は新しいライティングアーキテクチャーを搭載しています。このアーキテクチャーにおいては、デファ―ド/フォワード、およびタイル/クラスターを組み合わせたレンダラーが使われます。これにより、シーン内のライトの数に応じた対応を、これまで Unity に組み込まれていたレンダーパイプラインよりも遥かに効率的に行うことが可能になります。この新しいライティングアーキテクチャーは、パフォーマンスに重点を置いています。

デバッグモードで、タイル化されたライトを一覧表示している例

また、HD RP には様々な追加のライトのプロパティや新しいライトエディターが搭載されており、ライトをフェードさせたり、拡散ライティングとスペキュラーライティングのどちらか一方のみに設定を適用したり、ライトの色の設定に色温度を使用したりすることができます。スポットライトの場合は、内角を制御したり異なる形(円錐形・ボックス形・角錐形)を使用したりすることが可能です。色付きのクッキーにも対応しています。

HD RP は、長方形ライトなどのリアルタイムのエリアライトの使用に対応しています(現時点ではシャドウやベイクには非対応です)。

ライトの減衰は物理的な逆 2 乗の法則に従って行われ、物理的なライトの単位が使用されます。ライティングとライトの制御は完全にリニアで、Unity 組み込みの「ガンマモード」はなくなっています。太陽光の強度は地面(床)の高さにおけるルクス(lx)で定義され、ポイントライトとスポットライトはルーメン(lm)で定義されます。

イメージベースドライティングの面では、HD RP ではリフレクションプローブが大幅にアップグレードされました。具体的には、方向付きのバウンディングボックスや球形の使用が可能となり、プロキシシェイプ(シーンのジオメトリを近似するエリア)とインフルエンスシェイプ(ピクセルが影響を受けるエリア)が分離され、インフルエンスのフェーディングに関する各種オプション(フェースごとのフェーディング、法線の方向に基づくフェーディングなど)が使用できるようになっています。

マテリアルのレンダリング

HD RP には Lit シェーダーと呼ばれる独自のスタンダードシェーダーがあります。Lit シェーダーは数多くの機能を搭載しており、従来の Unity 組み込みのレンダーシステムよりも豊かなマテリアルの表現が可能です。両面サーフェスのオプションもあり、自動的にグローバルイルミネーションに接続されて、プラナーやトリプラナーを始めとする様々なマッピングのオプションが使用できるようになりました。パララックスオクルージョンマッピングやテッセレーションなどの高度なエフェクトがワンクリックで使用できるようになっています!

しかし、マテリアルのレンダリングに関する最も強力な追加要素は、そのライティングモデルです。
HD RP が使用する双方向反射分布関数は、スペキュラーレイヤー用の等方性多重散乱 GGX と拡散光レイヤー用の Disney 拡散です。従来の Unity 組み込みのレンダーシステムとの違いは、この多重散乱の部分です。

以下の画像は、金色のメタリック球の比較です。左に行くにつれてスムース、右に行くにつれてラフになっています。

等方性単一散乱 GGX(従来の Unity 組み込みのレンダーシステムに類似しています)
HD RP の等方性多重散乱 GGX の場合、マテリアルがラフになるに従って、暗くなるのではなく彩度が高くなります。

デフォルトのパラメーターの定義は Metallic/Smoothness ですが、同じシェーダー内で SpecularColor/Smoothness に切り替えることも可能です。

HD RP では、この初期設定モデルを改良したり置き換えたりできます。各種オプションを使って以下を行うことができます。

  • 等方性 GGX を異方性 GGX に置き換える
  • Disney 拡散にサブサーフェススキャタリング(表面下散乱)を追加する
  • 透過性を追加する
  • 遊色エフェクトを追加する
  • クリアコート GGX を追加する

このようにライティングモデルにバリエーションがあるので、様々な複雑な見た目を実現できます。

透過性とサブサーフェススキャタリング(表面下散乱)を使用したキノコの画像(提供:Laurent Harduin)

また HD RP では、透明マテリアル用に、背面→前面の順でのレンダリング(ソートに役立ちます)や深度ポストパス(透明マテリアルの被写界深度エフェクトに使用できます)などの新しいオプションが使用可能です。

背面→前面の順にレンダーした、透明な両面サーフェスの遊色エフェクトの例

HD RP は Lit シェーダーがベースとなっており、様々な Lit シェーダーを組み合わせられる LayeredLit シェーダーを提供しています。LayeredLit に関する詳細は、こちらのブログ記事でお読みいただけます。

HD RP でもうひとつ追加されたのは、デカールへの対応です。デカールは不透明と透明の両方のマテリアルに対応しており(現在引き続き開発中です)、グローバルイルミネーションのサンプリング(ライトマップ/ライトプローブ)に正常に適用されます。

デカールを使用した、床に描かれたチョークの絵

デバッグ

HD RP で追加された最も重要な機能はデバッグツールです。デバッグは、データ作成およびパフォーマンスの問題を理解するためには極めて重要です。

HD RP にはカスタム可能な新しいデバッグウィンドウが搭載されており、これにより、デバッグの表示モードとレンダーパイプラインの設定を制御できます。このデバッグウィンドウは Unity エディター内のみならずどんなプレイヤーでも使用できます。そしてすべてのデバッグ機能が PlayStation 4 を含むすべてのターゲットデバイスで使用可能となっています。

Unity エディター上のデバッグウィンドウ(通常のプロパティ表示の状態)

デバッグウィンドウでは、不透明・透明の両方のマテリアルのプロパティを、デファ―ドあるいはフォワードレンダリングパスで表示できます。

ライティングのデバッグ表示(拡散ライティングのみの表示・反射ライティングのみの表示)も可能です。シーン全体に適用されるプロパティ(法線、アルベド、スムースネスなど)のオーバーライドも行え、モーションベクターやデプスバッファなどの中間的なレンダーターゲットを表示することもできます。その他にも、特定のプロパティ(「ライトマップを使用したオブジェクト」「テッセレーションを使用したオブジェクト」など)の強調表示や NaN チェッカーなど、様々な機能を備えています。

プレイヤー内のデバッグウィンドウの例(拡散ライティングモードでアルベドをオーバーライドした状態)

カラーピッカーモードも面白いモードのひとつです。これは、現在の画面上の値や HDR 値をポストプロセッシングの適用前に読み出すものです。

デバッグウィンドウは簡単に拡張可能で、AI やアニメーションデバッグツールなど、ゲームに必要な任意のデバッグツールに対応させることができます。

新しい挙動

HD RP には従来の Unity 組み込みのレンダーパイプラインとは異なる新しい挙動が搭載されています。

デファ―ドとフォワードのレンダリングパスが同じ機能セットをサポートしています。サブサーフェススキャタリング(表面下散乱)、スクリーンスペースアンビエントオクルージョン、およびデカールは、両方のパスで同様に機能します。特定の機能を使用するためにどちらか特定のレンダリングパスを選択しなければならないという事はありません。

HD RP はカメラに対する相対的なレンダリングを採用しています。つまり、ワールドの原点から遠く離れていたとしても精度の高いレンダリングが行えるということです。これは HD RP で使用されるすべてのシェーダーに影響します。

カメラは、どのライティングアーキテクチャを使用するか(デファ―ドおよびフォワードレンダラーパスをシーン内で組み合わせ可能)と、そのレンダリングにどの機能を有効にするかを制御できます。フォグ、シャドウ、ポストプロセッシングなどを無効にすることもできます。

シーン設定のセットアップには、ボリュームの設定をベースとしたまったく新しいシステムが採用されています。これはポストプロセッシングで使用されるものと類似しています。シーンの設定(空、太陽光のカスケードシャドウ、スクリーンスペースシャドウの接触設定など)をボリューム毎に設定でき、パラメーターを補間してボリューム間の遷移を滑らかにすることが可能です。

また、空とフォグ用に新しいオプションが追加されています。高さに応じたフォグや、空の色で彩色されたフォグなどです。また、フォグは不透明・透明の両方のマテリアルに影響を与えます。

最後に、レンダーターゲットのアロケーションに関して HD RP は専用のシステムを採用しており、画面をリサイズするたびに再アロケーションしなくても済むようになっています。このため、例えば動的解像度の使用時などに余計なターゲットアロケーションの発生が回避されます。

制限事項

HD RP は現在も開発中であるため、一部の機能は未完成であったり、不具合があったりします。Unity 2018.1 と共にプレビュー版が公開されますが、まだプロダクト開発にお使いいただけるレベルにはありません。

現時点における制限事項で重要なものは、HD RP は Unity のパーティクルシステムで作成された Lit パーティクルと互換性がないことです。互換性があるのは Unlit パーティクルのみです。

また、ビルトインのテレインシステムには様々なアーティファクトがあります。

すべてのスクリプタブルレンダーパイプライン(SRP)に言えることですが、ライトのレンズフレアなど、以前 Overlay レイヤーでレンダーされたものにはすべて非対応です。Grabpass はなくなっています。

今後の開発予定

開発チームは現在、安定化およびプラットフォーム対応の作業を集中的に進めていますが、ボリューメトリックライティングなどの目玉機能も公開予定です。

エリアライトは Unity Labs チームによる調査・研究に基づいて改善される予定です。

より一貫性のあるライティングとポストプロセッシングを実現するための次のステップとして、物理ベースカメラの搭載も予定されています。

また、キャラクターレンダリングツールのいくつかのプロトタイプも開発中です。

<a href="https://www.artstation.com/artwork/83EBx">Windup プロジェクト</a>の女の子のキャラクターを含むシーンのレンダリング

まとめ

HD RP は、現世代のゲームのビジュアル品質を極限まで高める、Unity のまったく新しいレンダーパイプラインとして公開されます。

これを使用するに当たっての難点を挙げるとすれば、現在の Unity 組み込みのレンダーパイプラインと大幅に異なるために、学ばなければならない事が多いことです。
上記でご紹介したすべての機能が複雑なものです。一元的かつ一貫したライティングの実現は非常に難易度の高い課題です。優秀なデバッグツールの使用は往々にして容易ではなく、カメラに対して相対的なレンダリングを導入すると、今まで以上に熟考が求められます。HD RP 用のカスタムシェーダーの記述も可能ですが、そのために必要とされる知識は以前より遥かに多くなります。しかし、このような課題を乗り越えるに値する結果を HD RP はもたらしてくれるはずです!

Unity ベータプログラム に参加して、新機能をいち早く体験してみてください。HD RP の開発状況は GitHub で随時ご確認いただけます。Unity フォーラムの Graphics Experimental Previews のセクションで HD RP についてお話しできるのを楽しみにしています!

HD RP および複雑なマテリアルを使用した、独自のスタイルを持つゲーム環境の例
2018年3月16日 カテゴリ: テクノロジー | 10 分 で読めます
取り上げているトピック