パス トレーサーは、プログレッシブなハードウェア アクセラレーションによるレンダリング モードであり、物理的に正確かつ妥協のないグローバル イルミネーション、マテリアルの反射や屈折などを使用することで、リアルタイム機能のデメリットを軽減します。パス トレーサーは Unreal Engine に組み込まれているレイ トレーシング アーキテクチャを共有しているため、クリーンでフォトリアルなレンダリングを実現しながら、追加設定は必要最小限か、まったく必要ありません。
ARCHVYZ 制作の「Virtual tour in Unreal Engine」。 デザイン:Toledano Architects。
パス トレーサーでは、リアルタイム レイ トレーシング や GPU ライトマス などの他のレイ トレーシング機能と同じレイ トレーシング アーキテクチャを使用しています。そのため、グラウンド トゥルースの比較 やプロダクション レンダリングに最適です。パス トレーサーは、シーン内に存在するジオメトリとマテリアルのみを使用して偏りのない結果をレンダリングします。また、リアルタイム レンダリング向けに適切に機能するよう開発された、同じレイ トレーシング コードを共有することはありません。
パス トレーサーのメリット
パス トレーサーは、他のレンダリング モードと比較して以下のメリットを提供します。
物理的に正確な結果を伴う、高品質でフォトリアルなレンダリングを生成する機能。
他のオフライン レンダラの結果と比較して、最小限の追加設定で済むか、追加設定が不要。
対応するリアルタイム機能との機能のギャップが低減される。たとえば、グローバル イルミネーションがある場合やパス トレーシングされたシャドウがある場合などにおいて、反射や屈折の中で表示されるマテリアルのレンダリングには制限がありません。
シーケンサーおよびムービー レンダー キューと完全に統合されており、映画/テレビ品質のレンダリング出力をサポート。
パス トレーシングを使用した例
次のシーンは、パス トレーサーを使用して高品質なレンダリングを実現した例です。
ARCHVYZ 制作の「Virtual tour in Unreal Engine」。 デザイン:Toledano Architects。
プロジェクトでパス トレーサーを有効にする
パス トレーサーを使用するには、プロジェクトで ハードウェア レイ トレーシング が有効になっている必要があります。以下のシステム要件を満たし、これらの設定を有効にする必要があります。
システム要件:
オペレーティング システム:Windows 10 1809 以降
GPU:NVIDIA RTX および DXR ドライバ対応 GTX シリーズ グラフィック カード
プロジェクト設定:
[Platforms (プラットフォーム)] > [Windows] > [Targeted RHIs (ターゲットの RHI)]:DirectX 12
[Engine (エンジン)] > [Rendering (レンダリング)] > [Hardware Ray Tracing (ハードウェア レイ トレーシング)]:[Path Tracing (パス トレーシング)] を有効にする
[Engine (エンジン)] > [Rendering (レンダリング)] > [Hardware Ray Tracing (ハードウェア レイ トレーシング)]:[Support Hardware Ray Tracing (ハードウェア レイトレーシングをサポート)] を有効にする
[Engine (エンジン)] > [Rendering (レンダリング)] > [Hardware Ray Tracing (ハードウェア レイ トレーシング)]:[Path Tracing (パス トレーシング)] を有効にする
Unreal Engine 5 では、マテリアル用のパス トレーサー固有のシェーダー置換の作成を制御する設定が導入されました。パス トレーサーを使用する予定がないプロジェクトでは、この設定を無効にするとシェーダーのコンパイル時間を短縮できます。
[Engine] > [Rendering] > [Optimizations (最適化)]:[Support Compute Skin Cache (スキン キャッシュの計算をサポート)] を有効にする
プロジェクトで [Support Hardware Ray Tracing] が有効になっている場合に [Support Compute Skin Cache (スキン キャッシュの計算をサポート)] が有効になっていないと、これを有効にするよう求めるポップアップ ウィンドウが開きます。これは、ハードウェア レイ トレーシング機能およびパス トレーシング機能をサポートする上で必須の設定です。
エンジンを再起動して変更を反映します。
レベル エディタでパス トレーサーを使用する
[View Mode (ビュー モード)] ドロップダウン メニューを使用して [Path Tracing (パストレーシング)] を選択し、レベル ビューポートのパス トレーサーを有効にします。
有効にすると、レンダラは、カメラが動いていないときにサンプルの追加を続けることで、サンプルを着実に蓄積します。目標のサンプル数に到達すると、フレームのノイズ削減が実施され (ポスト プロセス設定でデノイジングが有効になっている場合)、レンダラ内に存在する残りのすべてのノイズが削除されます。
ほとんどの場合、シーンを変更するとサンプルが無効になり、プロセスが再起動します。カメラの移動、ビューの変更、オブジェクトのマテリアルの更新または変更、シーンのオブジェクトの移動、シーンへのオブジェクトの追加を行うと、シーンのサンプルが無効になります。
パス トレーサーはインタラクティブに使用でき、サンプルが蓄積されると、シェーディング カラーを持つピクセルの表示がすぐに開始されます。レンダリングにかかる時間は、サンプリングするシーンやマテリアルの複雑さに大きく影響されます。屋外のシーンでは光線が少ないバウンスで高速で出ていくため、比較的迅速にレンダリングできる傾向があります。屋内のシーンでは、特にマテリアルのアルベド値が 1.0 に近い場合はライト パスが長くなります。その結果、レンダリング時間は長くなります。
パス トレーサーをムービー レンダー キューと使用する
このセクションでは、ムービー レンダー キューを使用し、パス トレーシングされたレンダリング出力を生成する方法の詳細について説明します。一般的な使用法やワークフローの情報については、続行する前に「ムービー レンダー キュー」を参照してください。
ムービー レンダー キュー (MRQ) は、プロダクション パイプラインで高品質なレンダリング出力を生成する際に便利です。パス トレーサーと組み合わせて使用すると、組み合わせない場合よりも大幅に品質の高いレンダリングが可能になります。
[Path Tracer (パス トレーサー)] モジュールは、レンダリングされたフレームを出力するためにパス トレーサーの使用を有効にし、レンダリング パスに固有の設定をいくつか提供します。
レベル内に配置された ポストプロセス ボリューム でも、光線の最大バウンス数、エミッシブ マテリアルのサポート、露出などの特定のパス トレーシング機能を制御します。
MRQ はまた、高品質なレンダリングを実現するため、追加のコントロールやオプションを備えた他の設定モジュールを含んでいます。
[High Resolution (高解像度)] モジュールは、フレームを別のタイルとしてレンダリングする設定を提供します。このタイルを組み合わせることで、他の方法よりも高い単一フレームの解像度でレンダリングできます。個々のタイルは、お使いのグラフィック カードによってサポートされている最大解像度 (RTX 3080 カードの場合は 7680x4320 など) までで利用できます。
[Anti-aliasing (アンチエイリアス)] モジュールは、ピクセルあたりのサンプル数を調整し、モーション ブラー品質を高めるための特定の設定を提供します。このモジュールは、レベルのロードやビジュアル エフェクトでシーンを正確にレンダリングするのに必要なウォームアップ時間を提供します。
[Temporal Sample Count (テンポラル サンプル数)] では、時間内でわずかにオフセットが設定されたインスタンスの複数のレンダリングされたフレームを補間し、モーション ブラーの品質を改善します。このサンプルの蓄積はノイズ除去後に実行され、個々の空間パスからの残存アーティファクトの安定化に役立ちます。
[Spatial Sample Count (空間サンプル数)] では、フレームごとに使用するピクセルあたりのサンプル数を設定します。ピクセルあたりのサンプル数を増やし、各フレームのレンダリングに必要な時間を増やしながら、各レンダリング パスに存在するノイズを低減します。ピクセルあたりのポストプロセス ボリュームのサンプル数は、MRQ 出力のこの設定に影響しません。 *
取得されるピクセルあたりのサンプルの合計数は、空間サンプル数と時間サンプル数の積です。時間と空間の両方にサンプルが分散していると、より良い結果を得られる場合があります。たとえば、ピクセルあたり 16 のサンプルを使用する場合、空間サンプルで 4 個、時間サンプルで 4 個適用したり、空間サンプルで 16 個、時間サンプルで 1 個適用したりできます。
[Console Variables (コンソール変数)] モジュールを使用すると、レンダリング フレームに関連するコンソール変数を追加できます。これには、品質のオーバーライド、またはパス トレーサーに関連する可能性のある一部の設定の切り替えが含まれます。
[Output (出力)] モジュールは、出力ディレクトリ、ファイル名、画像の解像度、レンダリングする開始/終了フレームを構成するための設定を提供します。
パス トレーサーのポストプロセス ボリューム設定
レベルに配置されたポストプロセス ボリュームは、パス トレーサーの構成可能なプロパティを提供します。これには、ライトのバウンスの最大数、ピクセルあたりのサンプル、アンチエイリアス品質 (またはフィルタ幅) などがあります。
パス トレーサーの設定は、[Post Process Volumes Detail (ポストプロセス ボリュームの詳細)] パネルの [PathTracing] カテゴリにあります。
プロパティ |
説明 |
---|---|
Max.Bounces |
光線が終了するまでに移動するライトのバウンスの可能な最大数を設定します。 |
Samples Per Pixel |
収束でピクセルごとに使用するサンプル数を設定します。サンプル数の値を大きくすると、レンダリングされる画像のノイズが少なくなります。 |
Filter Width |
出力品質を改善するための、アンチエイリアス フィルタの幅を設定します。値が小さいとシャープな (エイリアスの強い) 結果が得られ、値が大きいとソフトな (ぼやけた) 結果が得られます。 |
Emissive Materials |
エミッシブ マテリアルのバウンス ライティングを有効にします。このプロパティを有効にすると、実際の光源によっても表されている、サーフェスのイルミネーション、および小さいエミッタからのノイズが二重にカウントされなくなります。たとえば、小さい電球を表すエミッシブ マテリアルがあり、同時にポイント ライトまたはスポット ライトの光源も使用してエリアを照らしている場合では、二重のカウントが行われています。 |
Max Path Exposure |
ファイアフライ アーティファクト の発生を低減するためにパス トレーシングで許可する最大露出を設定します。シーンの露出よりも露出を大きい値に調整すると、このアーティファクトが軽減されます (詳細情報およびこのタイプのアーティファクトの例については、このページの「追加情報」セクションを参照してください)。 |
Reference Depth of Field |
ポストプロセス エフェクトを置き換える参照品質の被写界深度 (DOF) を有効にします。 |
Reference Atmosphere |
スカイライトに対するスカイ環境の影響をベイクする代わりに、環境内でのパス トレーシングを有効にします。これを有効にすると、シーンに存在するスカイライト コンポーネントは自動的に無視されます。詳細については、このページの「参照アトモスフィア」セクションを参照してください。 |
Denoiser |
この切り替えオプションは、現在ロードされているノイズ除去プラグインを最後のサンプルに使用し、レンダリングされた出力からノイズを除去します。Unreal Engine では、デフォルトで Intel の Open Image Denoiser プラグインが使用されます。ノイズ除去プラグインが有効になっていない場合、この設定はレンダリングされた出力に影響しません。 |
パス トレーサーの制限事項
以下は、Unreal Engine のパス トレーシングにおける現在の制限事項です。
明るいマテリアルがあると、屋内のレンダリング速度が低下する
明るい白色など、アルベド値が 1.0 に近いマテリアルは、多数のバウンスを伴う光のパスをパス トレーサーでシミュレートする必要があるため、フレームのレンダリングにかかる時間が必要以上に長くなります。屋内のシーンでは、光線が環境から出て終了するまでの時間が長くなる場合があるため、特にこの影響を受けやすくなります。パス トレーサーではロシアン ルーレットの手法を使用して、シーンに貢献する可能性が低い光線を徐々に終了します。可能な場合にはロシアン ルーレットの手法によって光線が終了されるため、シーン全体で継続的にバウンスする光線が生じる可能性はあまり高くありません。マテリアルのアルベド値が 1.0 に近い場合は、光線のパスが終了される可能性が低くなり、フレームに対するレンダリング時間を伸ばすことにつながります。
実世界では、すべての入射光を反射するマテリアルは珍しく、サーフェスの外見がぼやける傾向があります。そのため、すべてのディフューズ マテリアルのベース カラーは 0.8 未満に維持することをお勧めします。
動的なシーン要素
パス トレーサーは、時間の経過とともにレンダラーによってサンプルを蓄積することで機能します。これは、スタティックなシーンに最適です。また、動くライト、アニメートされたスキン メッシュ、ビジュアル エフェクトなどの要素を含む動的なシーンにはあまり適していません。このタイプの要素によってパス トレーシングがエディタで無効になることはなく、フレーム内でアーティファクトがぼやけたり筋状の表示になったりします。これは、エディタで作業し、ムービー レンダー キューを使用して修正し、最終的な要素をレンダリングした場合のみに表示されます。
Path Tracing Material Quality Switch ノード
PathTracingQualitySwitch ノードを使用してマテリアルの複雑さを低減することで、パス トレーシングに向けてマテリアルを最適化すると、複雑さや標準マテリアルで使用される回避策を軽減することができます。ランタイムは重要ではないため、マテリアルで妥協する必要はありません。これらのノードを使用することで、マテリアルを複製することなく、妥協のない結果を提供することができます。
Ray Tracing Material Quality Switch ノード
Ray Tracing Quality Switch ノードを使用してマテリアルの複雑さを低減し、レイ トレーシングに向けてマテリアルを最適化すると、ランタイム時の負荷を抑えることができます。これにより、Unreal Engine のレイ トレーシング機能ではディファード レンダラと比較して単純なマテリアルを使用できます。パス トレーサーの目的は高品質な出力であるため、パス トレーサーは、レイ トレーシングに基づいているにもかかわらず、これらのスイッチ ノードの Normal ポートを使用します。パス トレーサー専用のマテリアルの動作を制御するには、代わりに PathTracingQualitySwitch ノードを使用します。
HDRIBackdrop はパス トレーサーと互換性がない
HDRIBackdrop コンポーネントの現在の実装では、パス トレーサーでライティングが二重にカウントされ、HDRI ライティングの重要度サンプリングが無効になります。バックドロップを表示させるには、指定されたテクスチャを持つスカイ ライトを使用して、パス トレーサー コンソール変数
r.PathTracing.VisibleLights 2
を設定することをお勧めします。
これは、シャドウ キャッチャーによる地面を提供するものではありません。
詳細情報と特定の機能の注意事項については、このページの「パス トレーサーのサポートされている機能」セクションを参照してください。
パス トレーサーのサポートされている機能
パス トレーサーの制限事項となるのは現在の実装の制限事項か、サポートされる予定がない機能のいずれかです。この機能のリストは、現在のリリースで現時点でサポートされている内容を示すものであり、エンジンがサポートしている機能/プロパティをすべて網羅するものではありません。
パス トレーサーは、Unreal Engine の リアルタイム レイ トレーシング 機能と同じコードを共有しています。通常、リアルタイム レイ トレーシングでサポートされている機能はパス トレーサーでもサポートされています。
機能名 |
サポートの有無 |
追記 |
||
---|---|---|---|---|
ジオメトリ タイプ |
||||
Nanite |
有 |
Nanite が有効なメッシュには、デフォルトでフォールバック メッシュが使用されます。ソース メッシュのトライアングルをより多く使用するには、スタティックメッシュ エディタの [Fallback Relative Error (フォールバック相対誤差)] パラメータの値を小さくします。(実験段階) Nanite メッシュのネイティブのパス トレーシングの初期サポートは、コンソール変数 |
||
スキン メッシュ (Skinned Meshes) |
有 |
アニメーションによってパス トレーサーが無効になることはなく、ビューポートにぼかしや筋状の表示を発生させる可能性があります。最終的な画像を出力するには、ムービー レンダー キューを使用する必要があります。 |
||
ワールド位置オフセット駆動のアニメーション (World Position Offset-driven Animation) |
有 |
[Evaluate World Position Offset (ワールド位置オフセットを評価)] が個々のシーンのアクタで有効になっている必要があります。パス トレーサーが無効になることはなく、ビューポートにぼかしや筋状の表示を発生させる可能性があります。最終的な画像を出力するには、ムービー レンダー キューを使用する必要があります。 |
||
髪のストランド/束 (Hair Strands) |
有 |
髪の束のサポートは、効率的なアクセラレーション構造を構築するために多くのリソースを必要とするため、引き続き実験的段階と見なされています。コンソール変数 |
||
ランドスケープ (Landscape) |
有 |
|||
スプライン メッシュ (Spline Mesh) |
無 |
|||
インスタンス スタティックメッシュ (Instanced Static Mesh) |
有 |
|||
階層インスタンス スタティックメッシュ (Hierarchical Instanced Static Mesh) |
有 |
|||
水のジオメトリ (Water Geometry) |
有 |
|||
ビジュアル エフェクト |
||||
Niagara パーティクル システム (Niagara Particle System) |
有 |
パーティクル システムによってパス トレーサーが無効になることはなく、ビューポートにぼかしや筋状の表示を発生させます。最終的な画像を出力するには、ムービー レンダー キューを使用する必要があります。 |
||
ライト タイプ |
||||
ディレクショナル ライト (Directional Light) |
有 |
|||
スカイ ライト (Sky Light) |
有 |
|
||
ポイント ライト (Point Light) |
有 |
|||
スポット ライト (Spot Light) |
有 |
|||
矩形ライト (Rect Light) |
有 |
|||
ライティング機能/プロパティ |
||||
エミッシブ マテリアル (Emissive Material) |
有 |
小さいエミッシブなパーツは、レンダリングされたシーンに多数のノイズを発生させる場合があります。また、エミッシブなパーツに関連付けられたライトがある場合、二重にカウントされたライティングを発生させます。無効にするには、ポストプロセス ボリュームの設定の [Emissive Materials (エミッシブ マテリアル)] チェックボックスを使用するか、コンソール変数 |
||
スカイ環境 (Sky Atmosphere) |
有 |
コンポーネント上で [Real Time Capture (リアルタイム キャプチャ)] が有効に設定されたスカイ ライトがシーン内に必要です。または、ポストプロセス ボリュームの設定の [Reference Atmosphere (参照アトモスフィア)] を有効にして、スカイライトに対するスカイ環境の影響をベイクする代わりに、環境のパス トレーシングを有効にします。これを有効にすると、シーンに存在するスカイライトは自動的に無視されます。詳細については、このページの「フォグと大気のボリュメトリック」セクションを参照してください。 |
||
ボリュメトリック クラウド (Volumetric Cloud) |
一部サポート有 |
シーン内に [Real Time Capture] が有効なスカイ ライトが必要です。ポストプロセス ボリュームの設定の [Reference Atmosphere] が有効な場合、このコンポーネントは現在無視されます。 |
||
指数関数的高さフォグ (Exponential Height Fog) |
有 |
[Volumetric Fog (ボリュメトリック フォグ)] 設定を有効にする必要があります。一部のコントロールは物理的に意味がないため、すべてのコントロールがサポートされているわけではありません。詳細については、このページの「フォグと大気のボリュメトリック」セクションを参照してください。 |
||
ボリュメトリック フォグ (Volumetric Fog) |
有 |
Exponential Height Fog (指数関数的高さフォグ) コンポーネント上で有効にする必要があります。詳細については、このページの「フォグと大気のボリュメトリック」セクションを参照してください。 |
||
IES プロファイル (IES Profile) |
有 |
|||
ライト関数 (Light Function) |
有 |
|
||
ポストプロセス |
||||
被写界深度 (DOF: Depth of Field) |
有 |
デフォルトでは、パス トレーサーはエンジンのポストプロセス被写界深度を活用します。ただし、半透明マテリアルでは、このアプローチ固有の制限が引き継がれます。代わりに、パス トレーシング プロセス中に被写界深度を直接シミュレートする、ポストプロセス ボリュームの参照品質モードを有効にします。 |
||
モーション ブラー (Motion Blur) |
一部サポート有 |
[Path Tracing] モジュールの [Reference Motion Blur (参照モーション ブラー)] を有効にして、ムービー レンダー キューを使用すると、最も正確な結果を得ることができます。このオプションにより、より正確なモーション ブラーを得るためにより高いパフォーマンス負荷が生じますが、スムーズな結果を得ることができます。このモードでは、ポストプロセス ブラーは適用されず、すべての空間サンプルおよびテンポラル サンプルが蓄積された後にノイズ除去が適用されます。適用するテンポラル サンプルが多いほど品質が高くなります。ただし、テンポラル サンプルの数が非常に大きい場合は、シーケンサーにおけるティック解像度の制限に注意してください。 |
||
マテリアル シェーディング モデル |
||||
ライティングなし (Unlit) |
有 |
|||
デフォルト ライティング (Default Lit) |
有 |
|||
サブサーフェス (Subsurface) |
有 |
|||
統合済みスキン (Preintegrated Skin) |
有 |
サブサーフェスのシェーディング モデルと同じレンダリングを実行します。 |
||
アルファ ホールドアウト (Alpha Holdout) |
有 |
|||
クリア コート (Clear Coat) |
有 |
|||
サブサーフェス プロファイル (Subsurface Profile) |
有 |
Burley サブサーフェス散乱が有効になっているサブサーフェス プロファイルが必要です。 |
||
両面フォリッジ (Two Sided Foliage) |
有 |
|||
ヘア (Hair) |
有 |
このシェーディング モデルのサポートは、依然として 実験段階 と見なされており、Lit シェーディング モデルの動作に対してまだ較正されていません。 |
||
クロス (Cloth) |
有 |
|||
眼 (Eye) |
有 |
|||
単一レイヤー ウォーター (SingleLayerWater) |
有 |
このシェーディング モデルの実験的サポートを追加しました。ラスタ実装はポストプロセスに大きく依存するため、近い一致は現在可能ではありません。 |
||
薄い透明 (Thin Translucent) |
有 |
|||
マテリアル表現式から (From Material Expression) |
有 |
|||
マテリアル機能 |
||||
色付きシャドウ (Colored Shadow) |
有 |
薄い透明 (Thin Translucent) またはソリッドなガラスで実現できます。このページの「パス トレーサーを使用したガラスのレンダリング」セクションと、「色吸収」セクションを参照してください。 |
||
半透明シャドウ (Translucent Shadow) |
有 |
|||
屈折 (Refraction) |
有 |
|||
デカール (Decal) |
有 |
現時点では平面デカールのみが実装されています。メッシュ デカールはサポートされていません。 |
||
異方性 (Anisotropy) |
有 |
|||
システム サポート |
||||
複数の GPU (Multiple GPU) |
有 |
NVIDIA NvLink / SLI をサポートする GPU が必要です。このページの「複数の GPU のサポートを有効にする」セクションを参照してください。 |
||
シーケンサーのムービー レンダー キュー (Sequencer Movie Render Queue) |
有 |
|||
正投影カメラ (Orthographic Camera) |
有 |
|||
インスタンスごとのカスタム データ (Per Instance Custom Data) |
有 |
|||
インスタンスごとのランダム データ (Per Instance Random Data) |
有 |
追加情報
パス トレーシング モードは、Unreal Engine 内の他のレンダリング方式の一部とは機能が異なります。つまり、リアルタイム レンダリングで適切に機能するものでも、パス トレーシングを使用したレンダリングでは最適な動作にならない可能性があります。次のセクションでは、これらの不整合や一般的な問題、およびパス トレーサーの成果を改善するために実行できる手順について説明します。
ファイアフライ アーティファクトを低減する
パス トレーサーは、マテリアルのプロパティに従って光線をランダムに追跡することでライトをシミュレートします。シーンの明るい領域が検出される可能性が低い場合、結果のサンプルは過度に明るくなり、光の斑点 (ファイアフライ) が発生してフレーム内に表示されたり消えたりする場合があります。パス トレーシングでは、これらのエフェクトの共通の発生源に最もなりやすいものが最小化されますが、一部のシナリオではそれでも発生する場合があります。
パス トレーシングされた結果がブルーム ポストプロセス パスと組み合わさると、結果のピクセルは表示されたり消えたり、明るくなったり暗くなったりするため、非常に目につきやすくなります。
ポストプロセスの設定の [Max Exposure Path (最大露出パス)] では、レンダリングされたパス トレーシング済みのシーン内で使用される最大露出を制御します。ポストプロセスの [Max EV100 (最大 EV100)] ([Lens (レンズ)] > [Exposure (露出)] セクション) の設定により、現在のシーンの露出よりも露出を数段階大きくすると、ファイアフライが発生する可能性が低くなります。
ノイズ除去オプション
ビューポートまたは ムービー レンダー キュー を通じてパス トレーサーを使ってフレームをインタラクティブにレンダリングする際は、わずかなノイズが常に発生します。ノイズを削減する一つの方法として、ノイズ除去アルゴリズムを使って最終結果を安定させ、ノイズを抑えたクリーンな画像を生成するやり方があります。
パス トレーサーでは、ポストプロセス ボリューム の設定にある [Path Tracing (パス トレーシング)] セクションの [Denoiser (ノイズ除去)] が有効な場合にノイズ除去が有効になります。
Unreal Engine では、次のサードパーティ製ノイズ除去ライブラリからのプラグインを介してノイズ除去アルゴリズムが実装されます。
「Intel Open Image Denoise」 - 最後に採取したサンプルからのノイズを除去し、長期間実行されるフレームの品質を向上する CPU ベースのノイズ除去のライブラリです。
「NVIDIA Optix AI-Accelerated Denoiser」 - ノイズの除去処理を高速化しつつ、視覚的なノイズを軽減するために、数万点にも及ぶ画像でトレーニングされた、GPU アクセラレーションを活用する人工知能 (AI) のライブラリです。
Open Image Denoise プラグイン
OpenImageDenoise プラグインはデフォルトで有効になります。
このノイズ除去機能は CPU で実行されます。インタラクティブなノイズ除去向けの設計ではありませんが、長期間実行されるフレームの品質改善に役立ちます。このノイズ除去機能はあらゆるケースにおける一時的な一貫性を保証するものではなく、安定した出力を得るために、ピクセルごとに非常に大きい数のサンプルが必要になる場合があります。ムービー レンダー キューを使用している場合に [Anti-aliasing (アンチエイリアス)] モジュール設定の [Temporal Sample Count (テンポラル サンプル数)] の値を大きく設定すると、一時的な安定性が高まります。
Optix Denoise プラグイン
これは実験段階のプラグインです。
OptixDenoise プラグインは [Plugins (プラグイン)] ブラウザで有効にする必要があります。
このノイズ除去機能では、ノイズの除去処理を高速化しつつ、視覚的なノイズを軽減するために、GPU アクセラレーションを活用する人工知能 (AI) を使用します。また、ノイズ除去されたアニメーションのちらつきの低減を試みるテンポラル コンポーネントも備えています。
OptixDenoise と OpenImageDenoise の両方のプラグインをプロジェクトで有効にした場合は、r.PathTracing.SpatialDenoiser.Type
コンソール変数を使って、ポストプロセス ボリュームの設定でノイズ除去が有効になった際に使用するノイズ除去機能を選択する必要があります。デフォルト値の「0」では OpenImageDenoise プラグインが使用され、「1」に設定すると OptixDenoise プラグインが使用されます。
パス トレーサーを使用したスカイライト
スカイライトは、スカイ マテリアルを適用した従来のスカイボックスを使用する方法、またはスカイ ライトの リアルタイム キャプチャ モードを使ってシーン内の空、大気、および雲をキャプチャする方法のいずれかで処理されます。
|
|
---|---|
スカイボックス メッシュ |
スカイ ライトのリアルタイム キャプチャ |
スカイボックスを使用して空を表現する場合、パス トレーサーと適切に連携するように、メッシュおよびマテリアルにいくつかの設定を行う必要があります。まず、スカイ マテリアルでは、マテリアルの [Details (詳細)] パネルの設定で [Is Sky] フラグが有効になっている必要があります。これによって、シーン内にスカイ ライトが存在する場合に、スカイボックス マテリアルのイルミネーションが二重にカウントされることがなくなります。また、仮に二重にカウントされてしまった場合にも、発生するノイズの量が低減される可能性があります。
レベルでスカイボックス アクタを選択して [Details] パネルの [Cast Shadows (シャドウをキャスト)] を無効にし、シーン内のスカイ ライトとディレクショナル ライトの効果がメッシュに遮られないようにします。
あるいは、スカイ ライトの リアルタイム キャプチャ モードを有効にすることで、スカイ環境 システムおよび ボリュメトリック クラウド システムからのライトの効果をキャプチャすることができます。スカイライトの表現におけるスカイボックス、スカイ環境、およびボリュメトリック クラウドのキャプチャに関するこの制限により、解像度はスカイ ライトの キューブマップの解像度 によって異なります。
|
|
---|---|
スカイ ライト キューブマップの解像度:128 (デフォルト) |
スカイ ライト キューブマップの解像度:512 |
フォグと大気のボリュメトリック
パス トレーサーでは、スカイ環境コンポーネントと指数関数的高さフォグ コンポーネントからのボリュメトリックをサポートします。
参照アトモスフィア
ポストプロセス ボリュームの設定で [Reference Atmosphere (参照アトモスフィア)] が有効になっている場合は、スカイ環境のライティングが容量分析で計算され、より現実的な結果が出力されます。天空光はローカルの光源およびディレクショナル ライトのみに影響を受けるため、このモードではシーン内のあらゆるスカイ ライトが自動的に無視されます。パス トレーサーでは地球を巨大な球体として表現するため、適切なシャドウイングが行われ、グラウンドの色が全方向からの空への反射光内で適切に反射します。
参照アトモスフィアを使用する際は、次の点にも注意してください。
スカイ環境 を意図どおりに使用するには、その [Transform Mode (トランスフォーム モード)] を [Planet Top at Component Transform (コンポーネントのトランスフォーム時に球体上部)] に設定し、コンポーネントをシーンの下に移動します。
ボリュメトリック クラウド コンポーネントはまだサポートされていません。このコンポーネントには、[Real Time Capture] が有効なスカイ ライトが必要です。このページの「パス トレーサーを使用したスカイライト」セクションを参照してください。
ボリュメトリック フォグ
フォグは、[Volumetric Fog] が有効に設定された指数関数的高さフォグ コンポーネントを使用する場合にサポートされます。
一部のパラメータは物理的に意味がないため、すべてのコントロールがサポートされているわけではありません。サポートされる主要なパラメータは次のとおりです。
Fog Density (フォグ濃度) と Fog Height Falloff (フォグ高さフォールオフ)
Scattering Distribution (スキャタリング分布)
Albedo (アルベド)
Extinction Scale (エクスティンクション スケール)
View Distance (表示距離)
無制限の範囲が長いレンダリング時間につながる可能性があるため、以前はこれによって高さフォグの影響が及ぶ領域が制限されていたことに留意してください。
光源の直接的な可視性
厳密でない光源 (ソース半径が設定されたポイントライト、矩形ライト、スカイ ライトなど) は、デフォルトでカメラの光線に対して直接表示されないようになっています。この例外となるのが、[Real Time Capture] が有効になっているスカイ ライトです。
スカイライトをスカイボックスのジオメトリ、およびスタティックな (または指定した) キューブマップと組み合わせる場合、通常、スカイライトはカメラ光線で表示されることはありません。コンソール変数 r.PathTracing.VisibleLights 1
を設定することで、これを変更できます。
表示されるライトのコンソール変数が有効になっているかどうかにかかわらず、反射と屈折においてすべての光源が表示されるようになります。これにより、光源がすべての光線パスに確実に表示されます。ただし、予期しない動作が発生する場合があります。たとえば、矩形ライトをガラスの窓のすぐ後ろに配置するとそのライトは表示されますが、窓を通した表示はブロックされます。これは、屈折率が 1 でない屈折の場合のみに発生します。
パス トレーサーを使用したガラスのレンダリング
パス トレーサーを使用し、指定した厚さのガラスをレンダリングするには 2 つの方法があります。サーフェスの物理的なプロパティに基づいて正確な物理的外観を実現するいくつかの値を使用する方法と、アート ディレクションで制御を向上するものの、物理的な正しさには多少欠ける追加のプロパティを使用する方法です。これらはどちらも、ガラスのようなマテリアルにパス トレーサーを使用して高い品質を実現する場合に適切かつ有効な方法です。
以下の例のように、いくつかの値とパラメータをマテリアルに設定するだけで、物理的に正確な結果を得ることができます。
クリックしてフルサイズで表示。
アート ディレクションにおいてより多くの制御を必要とする状況では、ベース カラーを調整するとガラスの反射に色合いを付けることができます (シャドウには付きません)。また、Fresnel を Opacity 入力に接続すると、反射のフォールオフをより細かく制御できます。
クリックしてフルサイズで表示。
近似コースティクス
パス トレーサーは近似コースティクスのパスを使用し、特にガラスやメタル サーフェスのラフネス値が低い場合にノイズを低減します。このタイプのマテリアルの場合、反射率が高いコースティクスではさまざまなパターンが生じ、ノイズのないイメージに収束するには現実的でない数のサンプルや時間がかかる可能性があります。
これはたとえば、レンダリングおよびサンプルの蓄積プロセスで画像が順に取得され、処理が完了し、ノイズが除去された結果から最終的な画像が取得された場合などです。
クリックしてフルサイズで表示。
通常、コースティクスはノイズのない結果に収束するまで長い時間がかかるため、パス トレーサーではコンソール コマンド r.PathTracing.ApproximateCaustics 1
を使用し、画像内に表示されるコースティクスの近似を実行することで画像のノイズを低減します。この変数はデフォルトで有効になっています。
さらに考慮するべき要素として、屈折率の高いコースティクスと近似コースティクスの違いがあります。ノイズ除去機能を使用すると、収束するのに十分な時間をかけた場合のコースティクスの表示をプレビューできますが、近似コースティクスを使用すると、はるかに短時間で制作に利用しやすい画像を得ることができます。
Thin Translucency シェーディング モデル
Thin Translucency シェーディング モデルは、近似コースティクスを使用し、厚いガラスに適切に着色された半透明のシャドウで物理的に正確な結果を実現するのに便利です。
クリックしてフルサイズで表示。
1 つ注意すべき点としては、各インターフェースが一意のガラスとして処理されることです。つまり、シェーダーによって屈折は計算されず、オブジェクトは固体のジオメトリというよりは泡のような外観になります。
色吸収
[Blend Mode (ブレンド モード)] が [Translucent (透過)] に設定され、屈折パラメータが非ユニットのマテリアルは、固体ガラスとしてレンダリングされます。ガラスを透過する色 (別名「ベールの法則」) を制御するには、マテリアル グラフ内で Absorption Medium マテリアル出力ノードを使用します。この機能は、複数のバウンスによる光線の色の状態を追跡する必要があるため、パス トレーサーのみで使用可能です。
これは、パス トレーサーで吸収を制御するために使用するマテリアルの設定例です。
RGB カラーを設定する場合、「1」に近い値に設定すると吸収は示されません。
上記のマテリアルの例では、Transmittance Color を使用して、発生する吸収の量を制御します。指定された色は、100 単位の距離以降に到達するように正規化されています。この距離を変更するには、Transmittance Color = Color^(100/Distance)
の式を使用します。
|
|
|
|
---|---|---|---|
吸収:0x |
吸収:1x |
吸収:10x |
吸収:100x |
エネルギー保存
Unreal Engine 5 のエネルギー保存の実装は、金属やガラスのマテリアルのスペキュラ ロブにおけるエネルギー損失を低減するために使用されます。
エネルギー保存 (Energy Conservation) は、[Project Settings (プロジェクト設定)] の [Engine (エンジン)] > [Rendering (レンダリング)] > [Materials (マテリアル)] セクションで有効にできます。
後方互換性を維持するため、現時点でこの機能はデフォルトで無効になっています。エンジンの今後のリリースでは、この機能はデフォルトで有効にする予定です。
粗いライトの透過と反射
パス トレーサーは、粗い反射に加えて、粗い透過のレンダリングを可能にする点がユニークです。さらに、パス トレーサーはこれらのシェーダー パラメータを組み合わせています。
以下の例では、ガラス マテリアルのラフネス値によって異なる近似コースティクス、反射の粗さ、キャストされる半透明のシャドウを示します。
便利なコンソール変数
パス トレーサーを使用する場合に、有効にすると便利なコンソール変数の一部を以下に示します。
コンソール変数 |
説明 |
---|---|
|
すべてのライトをカメラ光線に対して表示します。デフォルトでは、この変数はエンジンのラスタベース モードに合わせて無効になっていますが、ライトがどのようにモデリングされるのかを把握する場合や、ライトがオーバーラップするケースを特定するのに役立つことがあります。 |
|
この変数はビューに小さい進捗バーを追加し、ピクセルあたりの構成済みサンプルの進捗を表示します。進捗バーは、蓄積が完了すると自動的に非表示になります。ムービー レンダー キューに影響することはなく、有効にしても問題ありません。 |
|
このオプションを使用すると、ノイズ除去機能のオンとオフをすばやく切り替えることができます (現在のサンプルの蓄積が完了していると想定した場合)。ポストプロセス ボリュームの設定とは異なり、この変数を変更しても蓄積は再始動されません。また、レンダリング済みのフレームを、ノイズ除去機能を有効にしていない場合とすばやく比較するのに役立つことがあります。 |
よくある質問 (FAQ)
HighResShot を使用して収束されたパス トレース画像をキャプチャする
シーンで現在アクティブになっている Samples Per Pixel (ピクセルごとのサンプル数) と同等のコンソール変数 r.HighResshotDelay
を使用します。正しい出力がキャプチャされていることを確認するには、r.PathTracing.ProgressDisplay
の設定を「1」のままにする方法が最適です。キャプチャした画像に進捗バーが表示されない場合は、サンプルの蓄積が完了しています。
ランタイム時にパス トレーサーを有効にする
パス トレーサーは、(サポートされているプラットフォームで) ランタイム時に使用できます。コンソール コマンド show PathTracing
を使用すると、ゲーム ビューポートでパス トレーサーのオン/オフを切り替えることができます。ブループリントでは、Execute Console Command
を使用して、このタスクを実行できます。
Windows で「D3D Device Removed (D3D デバイスが削除されました) クラッシュ」のタイムアウト遅延を回避する
Windows は、GPU カーネルにかかる時間を制限することで、システムの応答性を維持しようと試みます。ブルート フォース パス トレーシングなどリソースを大量に消費するプロセスでは、特にロー エンド GPU やライト シミュレーションが複雑すぎて妥当な時間で終了できない場合に、この制限を受けやすくなります。
エンジンでは、一度に実行する作業量を制御するために、いくつかのコンソール変数を公開しています。ただし、これらの変数の設定を誤ると、全体的なパフォーマンスが低下することがあります。stat gpu
コマンドを使って、全体的なパフォーマンスを監視することをお勧めします。
r.PathTracing.DispatchSize
は、パス トレースされたレンダリングの最大幅と最大高さをピクセル単位で制御します。この値がビューポートまたは画像の解像度よりも低い場合は、レンダリングが複数のステップで実行されることがあります。この場合、Windows が GPU が引き続き応答していることを確認できる回数が増えます。デフォルト値は「2048」です。r.PathTracing.FlushDispatch
は、パス トレース プロセス中にコマンド リストをフラッシュする頻度を制御します。これを「1」に設定すると、Windows は GPU が引き続き応答していることを確認する機会が増えます。デフォルトでは「2」に設定されています。
極端なケースでは、クラッシュを回避しながら適切なパフォーマンスを維持することが困難な場合があります。そのような場合、Windows のタイムアウト制限自体を変更することができます。「GPU ドライバーのクラッシュを解決する方法」を参照してください。
ヘア (髪) を含むシーンでは、アクセラレーション構造 (BLAS) のタイムアウトが発生することがあります。その場合は、r.HairStrands.RaytracingProceduralSplits
の値を「1」または「2」に下げてみてください。
パス トレース ビューでインスタンスが表示されない
レイ トレーシングはカメラの可視性にも使用されるため、ハードウェア レイ トレーシングのデフォルトのカリング実装は、パス トレーシングのコンテキストにおいては過剰である可能性があります。パス トレーサー ビューに切り替えたときに複数のインスタンスが欠落しているように見える場合は、r.RayTracing.Geometry.InstancedStaticMeshes.Culling
を「0」に設定してみてください。
パス トレーサーを Nanite が有効なメッシュで使用する
Nanite が有効なメッシュのネイティブ パス トレーシングに対しては実験段階のサポートが提供されており、r.RayTracing.Nanite.Mode 1
でこれを有効にできます。このモードでは Nanite ストリーミング システムを利用して、レイトレースされたメッシュをその都度準備し、フォールバック メッシュのために可能な量以上のディテールを維持します。
また、表現については、パス トレーサーでは Nanite が有効なメッシュのフォールバック メッシュもサポートしています。フォールバック メッシュでは表現にソース メッシュのトライアングル比率を使用しますが、シーン内での Nanite が有効なメッシュのディテールの低下につながります。スタティックメッシュ エディタでフォールバック メッシュのディテールを高めるには、[Fallback Triangle Percent (フォールバックのトライアングル比率)] と [Fallback Relative Error (フォールバック相対誤差)] の各パラメータを調整します。
これらの設定の詳細については、「Nanite 仮想化ジオメトリ」ドキュメントの「フォールバック メッシュ」セクションを参照してください。
複数の GPU のサポートを有効にする
複数の GPU を使用するには Windows 10 バージョン 2004 以降が必要です。
複数の GPU (mGPU) を使ったライティングの計算は、複数の NVIDIA GPU をリンク付けしてまとめる NVIDIA の Scalable Link Interface (SLI) 技術を介してサポートされます。これにより、パス トレーサーや GPU ライトマスなどの主要なハードウェア レイ トレーシング機能を使用したシーンのレンダリングに必要な処理能力が向上されます。
複数の GPU のコンフィギュレーションに対するサポートを有効にするには、次のステップを実行します。
NVLink ブリッジを使って GPU をそれぞれ接続し、NVIDIA のコントロール パネルで SLI を有効にします。
-MaxGPUCount=N
コマンドライン引数を渡します。ここで N は、利用可能な GPU の数です。たとえば「-MaxGPUCount=2
」とします。エディタを起動した状態で、
r.PathTracing.MultiGPU 1
コンソール変数を使って複数の GPU のサポートを有効にします。また、「[Unreal Engine Root]/Engine/Config」にある「DefaultEngine.ini」ファイルの[/Script/Engine.RendererSettings]
セクションにこのコンソール変数を追加することもできます。
エディタを起動したら、複数の GPU のモードが有効になっていることを [Output Log (アウトプット ログ)] で確認できます。「LogD3D12RHI:Enabling multi-GPU with 2 nodes
」というメッセージを見つけます。