これは、開発者とテクニカルアーティストが Unity で High Definition Render Pipeline (HDRP) を設定して使用し、ハイエンドのグラフィックリアリズムを実現する方法を説明する一連の記事の 5 番目です。HDRP は Unity のリアルタイム レンダリングにおける技術的な飛躍を表しており、現実世界での振る舞いと同じように光を操作できます。
高級照明に関するハウツーシリーズの他の記事もぜひお読みください。
現代のハイエンドグラフィックスは、後処理なしでは不完全です。必ずしも「後処理で修正」できるわけではありませんが、より映画らしくするフィルターやフルスクリーン画像効果なしでレンダリングされた画像を想像するのは困難です。そのため、HDRP には独自の組み込みポストプロセスエフェクトがバンドルされています。
HDRPポストプロセッシングでは、ボリューム システム を使用して、画像エフェクトを カメラに適用します。オーバーライドを追加する方法がわかれば、ポストエフェクトをさらに適用するプロセスも簡単に理解できるはずです。
色とコントラストを制御するための後処理オーバーライドは 、機能が重複することがあります。適切な組み合わせを見つけるには、試行錯誤が必要になる場合があります。利用可能なすべてのエフェクトが必要になるわけではありません。希望する外観を作成するために必要なオーバーライドのみを追加し、残りは無視します。使用例については、 サンプルシーン の ボリューム を参照してください。
トーンマッピングとは、ハイダイナミックレンジの色を、使用する画面の狭いダイナミックレンジにマッピングする手法です。レンダリングのコントラストとディテールを向上させることができます。
映画のような外観にしたい場合は、 トーンマッピングモード を業界標準の ACES(Academy Color Encoding System) に設定します。彩度やコントラストを落とす場合は、「Neutral」を選択します。経験豊富なユーザーは、「カスタム」 を選択して、トーンマッピング カーブを自分で定義することもできます。
シャドウ、ミッドトーン、ハイライトのオーバーライドは、 レンダリングのシャドウ、ミッドトーン、ハイライトのそれぞれの色調と色の範囲を制御します。各トラックボールをアクティブにして、画像のそれぞれの部分に影響を与えます。その後、色補正をクリップまたはプッシュしすぎないように、「Shadow」と「Highlight Limits」を使用します。
ブルームは、光源の周囲に光がにじむ効果を生み出します。光源が強烈に明るく、カメラを圧倒しているかのような印象を与えます。
強度 と 散布を 調整して、 ブルームの サイズと明るさを変更します。しきい値 を使用して、鈍いピクセルや明るくないピクセルの鮮明さを維持します。
一方、レンズ ダートは、汚れやほこりのテクスチャを適用してブルーム効果を回折します。
被写界深度は、 実際のカメラ レンズのフォーカス特性をシミュレートします。
カメラの焦点距離に近い、または遠いオブジェクトはぼやけて見えます。焦点距離の設定は以下より行えます。
- 手動範囲フォーカスモードによるボリュームオーバーライド:ここでは、ボリューム自体が焦点距離を制御します。たとえば、これを使用して、場所に基づいてカメラを意図的にぼかすことができます (例: 水中シーン)。
- ボリューム設定拡張機能を備えた Cinemachine カメラ:これを使用して、ターゲットを追跡し、自動的にフォーカスします。
- 物理カメラフォーカスモードでの物理カメラのプロパティ:これを使用して、カメラ コンポーネントのフォーカス距離パラメータをアニメートします。
「Depth of Field」が有効な場合は、ボケと呼ばれるフォーカス外のぼかしエフェクトが、画像の明るいエリアを中心に現れます。カメラの絞りの形状を変更して、ボケの外観を変更します。アンチエイリアシング、ボリューム、露出に関する このハウツー ページの 追加の物理カメラ パラメータのセクションを参照してください。
シネマティクスやオフライン レンダリングの場合は、より高価ですが 物理ベースの被 写界深度を選択して、追加の設定と カスタム品質を有効にすることができます。
ホワイト バランス オーバーライドは、 最終画像で白色が正しくレンダリングされるようにシーンの色を調整します。温度 を押すと黄色 (暖色) と青 (寒色) を切り替えることができ、色合い を押す と緑とマゼンタの間の色合いを調整できます。
HDRP サンプルシーンでは、ローカルボリュームに各部屋のホワイトバランスオーバーライドが含まれています。
カラーカーブ を使用して、 色相、 彩度、または 明度の特定の範囲を調整します。利用可能な 8 つのグラフのいずれかを選択して、色とコントラストを再マップします。
色調整 オプションを使用して、最終的にレンダリングされたイメージの全体的なトーン、 色相、 彩度、 コントラストを 微調整します。
チャンネル ミキサーを使用すると 、1 つのカラー チャンネルが別のカラー チャンネルの「ミックス」に影響を与えることができます。RGB 出力を選択し、その影響を調整します。たとえば、赤出力チャンネルの緑の影響を高めると、画像のすべての緑の領域が赤みがかった色調になります。
レンズ歪みは、実際のレンズの製造における欠陥から生じる放射状のパターンをシミュレートします。その結果、特にズームレンズや広角レンズでは、直線がわずかに湾曲したり曲がったりして見えるようになります。
ビネットは、画像の角が暗くなったり彩度が低下したりする実際の写真撮影の効果を模倣します。この効果は、広角レンズを使用した場合に発生することがありますが、光を遮る器具(レンズフードやフィルターリングの積み重ねなど)によっても発生することがあります。視聴者の注意を画面の中央に引き付けるためにも使用できます。
現実世界の物体がカメラの露出時間よりも速く移動すると、結果の画像に縞模様やぼやけた模様が現れることがあります。
その効果をシミュレートするには、 モーション ブラー オーバーライド を使用します。パフォーマンス コストを最小限に抑えるには、 サンプル数を減らし、 最小速度を増やし、 最大速度を減らします。追加プロパティの下にある カメラクランプモード パラメータを減らすこともできます。
一般的に、レンズフレアはカメラのレンズに明るい光が当たったときに発生します。それは、単一の明るいグレア、またはカメラの絞りに一致する複数の色の多角形のフレアの形をとることができます。現実世界では、フレアは望ましくない効果をもたらしますが、物語や芸術の目的で使用されることもあります。たとえば、強いレンズフレアはプレイヤーの注目を集めたり、設定やシーンの雰囲気を変えたりすることができます。
HDRP では、レンダリング プロセスの後半段階で レンズフレアを ポストプロセス効果として使用します。
フレアの外観は Flare Assetで示されますが、エフェクトをレンダリングするには、シーン ビュー内のオブジェクト (光源やフレアを生成するその他のオブジェクトなど) にコンポーネント Lens Flare (SRP)を追加する必要があります。
このコンポーネントは、エフェクトの一般的な強度、スケール、およびオクルージョン パラメータを制御します。また、フレアがカメラ ビューの外側にある場合にオフスクリーンで実行するオプションも提供されます (ただし、特にフレアが静的なソースから発生している場合は、シーン内にフレア効果がいくらか投影されるはずです)。
レンズフレアについて詳しく知るには、パッケージ マネージャーからサンプルをインストールしてください。これは、定義済みの「Flare」アセットセットを追加し、レンズフレアエフェクトを含むように HDRP サンプルシーンを変更します。また、レンズフレアを参照して独自のレンズフレアを作成できるテストシーンもあります。
たとえば、プロジェクトで Directional Light Sun を選択すると、ライトにアタッチされたコンポーネント Lens Flare (SRP) とデータ アセットが表示されます。アセットを変更して、さまざまなフレア効果を観察します。
レンズフレアは、レンズフレアの要素で構成されています。各要素はフレアが生成できるさまざまなアーティファクトを表します。要素の形状は、多角形、円、またはその他のカスタム イメージにすることができます。要素パラメータを使用すると、色、変換位置、スケールを微調整できます。
光源に接続すると、Flare Elements は Tint を 活用して、同じ Flare Asset をさまざまな光源で再利用できます。
レンズフレアの仕組みについて詳しく知るには、 このプレゼンテーション をご覧ください。
「Rendering Debugger」ウィンドウ(「Window > Analysis > Rendering Debugger」)には、「Scriptable Render Pipeline」用のデバッグツールと可視化ツールがあります。左側はカテゴリ別に整理されています。各パネルでは、 照明、 マテリアル、 ボリューム、 カメラなどの問題を特定できます。
レンダリング デバッガーは、実行時のプレイ モードのゲーム ビュー、または開発ビルドのプレーヤー ビルドでも使用できます。メニューを開くには「Ctrl+Backspace」を使うか、ゲームコントローラーの 2 本のスティックを押してください。
デバッガーは、特定のレンダリング パスのトラブルシューティングに役立ちます。「Lighting」パネルで「Fullscreen Debug Mode」と入力し、デバッグ機能を選択できます。
このモードでは、「ピクセル探偵」として、特定の照明やシェーディングの問題の原因を特定できます。左側のパネルには、カメラ、マテリアル、ボリュームなどの重要な統計情報を使用してレンダリングを最適化する方法が表示されます。
フルスクリーン デバッグ モードがアクティブの場合、シーン ビューとゲーム ビューは特定の機能の一時的な視覚化に切り替わります。これは有用な診断として役立ちます。
また、 マテリアル画面>共通マテリアル プロパティで、Albedo、Normal、Smoothness、Specularなど、いくつかの共通マテリアル プロパティをデバッグすることもできます。
パフォーマンスをデバッグするには、再生モードでレンダリング デバッガー ウィンドウに移動します。そこから 統計パネルにアクセスできます。
詳細については、 デバッガーのドキュメントを 参照してください。
レイ トレーシングは 、従来のラスタライズよりも説得力のあるレンダリングを生成できる手法です。従来は計算コストが大きい処理でしたが、近年のハードウェアアクセラレーションの発達により、レイインターセクション(またはトレーシング)のリアルタイム利用が可能になりました。
HDRP のレイトレーシングは、依然としてフォールバックとしてラスタライズされたレンダリングに依存しているハイブリッドシステムであり、一部の GPU ハードウェアと DirectX 12 API におけるレイトレーシングのプレビューサポートを含みます。システム要件の一覧については、「Getting started with ray tracing」を参照してください。
レイ トレーシングを有効にするには (プレビュー)、HDRP プロジェクトの 既定のグラフィック API を DirectX 12に変更する必要があります。レンダー パイプライン ウィザード (ウィンドウ > レンダー パイプライン > HD レンダー パイプライン ウィザード) を開きます。¹HDRP + DXR タブで [すべて修正] を クリックし、エディターを再起動します。パイプライン ウィザードのプロンプトに従って、無効になっている機能を有効にします。
レイトレーシングを手動で設定することもできます。
プロジェクトでレイ トレーシングを有効にしたら、HDRP グローバル 設定と カメラ フレーム設定で もレイ トレーシングが有効になっていることを確認します。「Build Settings」で、互換性のある 64 ビットアーキテクチャーを使用していることを確認します。また、「Edit > Rendering > Check Scene Content for HDRP Ray Tracing」から、シーンのオブジェクトを検証します。
_____________
¹ Unity 2021 では、「Window > Rendering > HDRP Wizard」の下にある HDRP Wizard を見つけます。
レイ トレーシングにより、いくつかの新しい ボリューム オーバーライド が追加され、HDRP の既存のボリューム オーバーライドの多くが強化されます。次のセクションでは、各オーバーライドについて詳しく説明します。
アンビエントオクルージョン
レイ トレーシング アンビエント オクルージョンは、スクリーン スペースのアンビエント オクルージョンに代わるものです。スクリーン スペース アンビエント オクルージョン (SSAO) とは異なり、レイ トレーシング アンビエント オクルージョンではオフスクリーン ジオメトリを使用してオクルージョンを生成できます。これにより、フレームの端に向かうにつれてエフェクトが消えたり、不正確になったりする問題が解消されます。
HDRP は、シーンをカメラ中心の座標軸に沿ったグリッドに分割します。HDRP はこの構造を使い、光線がサーフェスに当たるたびに、ライティングに寄与する可能性のあるローカルライトのセットを決定します。次に、レイ トレーシング リフレクションやレイ トレーシング グローバル イルミネーションなどの特定の効果の光の反射を計算できます。
カメラ クラスター範囲ボリューム オーバーライド を使用して、この構造の範囲を変更し、考慮する必要があるゲーム オブジェクトとライトが確実に含まれるようにします。
Windows > Analysis > Rendering Debugger > Lighting > Fullscreen Debug Modeから利用できる HDRP デバッグ モード を使用できます。これにより、 ライト クラスター セル (赤で強調表示) を視覚化して、HDRP アセット内の セルあたりの最大ライト数にライト 数が達した場所が示されます。この設定を調整すると、不要な光漏れやその他のアーティファクトが軽減されます。
レイ トレーシング グローバル イルミネーションは、反射した間接照明をシミュレートするために使用されるスクリーン スペース グローバル イルミネーション (SSGI) およびライト プローブの代替手段です。リアルタイムで計算し、ライトマップをベイクする長いオフライン プロセスを回避しながら、同等の結果を得ることができます。
複数のバウンスとサンプルのメリットが期待できる複雑な内部環境には、品質設定を使用します。「Performance」モード(1 つのサンプルと 1 つの反射に限定)は、ライティングのほとんどがメインのディレクショナルライトによって行われる屋外の状況に適しています。
レイ トレーシング リフレクションを活用して、リフレクション プローブやスクリーン スペース リフレクションに比べて、より高品質のリフレクションを実現します。オフスクリーン メッシュは、結果として得られる反射に正しく表示されます。
「Minimum Smoothness」と「Smoothness Fade Start」の値を調整すると、滑らかなサーフェスがレイトレーシングによるリフレクションを受け始めるしきい値を変更できます。必要に応じてバウンスを増やします (例: 2 つのミラーが互いに反射する)。ただし、パフォーマンス コストに注意してください。
指向性ライト、 ポイントライト、 スポットライト、および 長方形エリアライトに レイ トレーシング シャドウ を使用します。不透明なゲームオブジェクトのシャドウ マップを置き換えることができます。ディレクショナルライトは、透明または半透明のゲームオブジェクトにレイトレーシングによるシャドウを落とすこともできます。
レイ トレーシングは、現実世界のように、投影者からの距離が離れるにつれて柔らかくなる、自然な外観の影を生成します。指向性ライト、ポイントライト、スポットライトも同様に半透明の影を生成できます。
さらに、HDRP の指向性ライトは半透明の色付きの影を生成します。この例では、ガラスの表面が床に正確な色の影を落とします。
その他のリソース
プレビュー版の High Definition Render Pipeline のレイ トレーシング機能のウォークスルーについては、「HDRP でレイ トレーシングをアクティブ化する」 をご覧ください。詳細については、 レイ トレーシングのドキュメント を参照してください。