リアルタイム レイトレーシング

Unreal Engine 4 のレイトレーシングの概要です。

Windows
MacOS
Linux

RayTracingBanner

レイトレーシングはフォトリアリスティック レンダリングのために、映画、テレビ、ビジュアライゼーション分野で長い間使用されてきた手法です。各イメージやフレームをレンダリングするために強力なコンピュータと時間が必要になります。映画やテレビでは、高品質の画像シーケンスをレンダリングするために数時間から数日までかかることがありますが、最終結果は現実の物体とシームレスにブレンドできるリアルな 3D コンテンツを生み出すことができます。建築ビジュアライゼーション系の企業の場合、レイトレーシングは自動車業界向けの美しいを作成したり、リアルに表現することで密集した住宅やオフィス ビルディングの最終的な外観を示すことができます。  

Unreal Engine 4 (UE4) のパワーと リアルタイム レイトレーシング (RTRT) により、多くのオフライン レンダラに負けない絶妙なライティング エフェクトを使ってインタラクティブ体験を生み出すことができます。リアルタイム レイトレーシングは、エリアライトによるソフト シャドウイング、正確なアンビエントオクルージョン、インタラクティブなグローバル イルミネーションを生み出し、物体をより自然に表現します。 

Unreal Engine のレイトレーシング

UE4 のレイトレーシングは 2 つの技法で構成されています

  • ハイブリッド レイトレーサー は、レイトレーシング機能と既存のラスタ エフェクトを組み合わせたものです。

  • パストレーサー はリファレンス レンダリングを生み出します。

レイトレーサー

レイトレーサーを使うと、シャドウ、アンビエントオクルージョン (AO)、反射、インタラクティブ グローバル イルミネーション、透過処理のすべてに対して、リアルタイムでレイトレーシングの結果が得られます。グラウンド トゥルースに近い結果と認識する、ノイズ削減アルゴリズムと組み合わせて、少ない数のサンプルを使用することで実行します。例えば、シャドウでは、光が当たるサーフェスからの距離や光源のサイズを基にソフトになり、物理的に正確なコンタクト シャドウが強くなります。

Traditional Shadowmapping

Ray Traced Shadows

パストレーサー

パストレーサーは偏りのない、物理ベースのパストレーサーで、シーンのリファレンス画像のレンダリングに適しています。オフライン レンダラと同様の動作で、その時点の状態で、時間をかけてサンプルを集め、最終ピクセルではなく、シーンのグラウンド トゥルース レンダリングの生成に便利です。

詳細は、パストレーサー を参照してください。

プロジェクトでレイトレーシングを有効にする

次のステップに従って、プロジェクトでレイトレーシング サポートを有効にします。 

システム要件

オペレーティング システム

Windows 10 RS5 (Build 1809) or later

Windows のビルド番号を調べるには、Windows の検索ボックスに「winver」と入力します。

GPU

DXR をサポートする NVIDIA RTX および一部の GTX シリーズ カード (最新のデバイス ドライバを使用)

詳細については、こちら.

を参照してください。

Unreal Engine のバージョン

4.22 以降

Unreal Engine レンダリング パス

ディファード パス (後述の サポートされている機能 を参照してください。)

DirectX12 とレイトレーシングを有効にする

  1. メイン メニューの [File (ファイル)] メニューから [Project Settings (プロジェクト設定)] を開きます。

  2. [Platforms (プラットフォーム)] > [Windows (ウィンドウ)] で、[Default RHI (デフォルト RHI)] ドロップダウンで [DirectX 12] を選択します。

    EnableDX12Mode.png

  3. [Engine (エンジン)] > [Rendering (レンダリング)] で、[Ray Tracing (レイトレーシング)] をオンにします。

    ProjectSetting_EnableRT

    レイトレーシングを有効にするには、プロジェクトで Support Compute Skincache (スキンキャッシュの計算のサポート) を有効にする必要があります。有効になっていないと、有効にするかどうかを確認するメッセージが表示されます。[Yes (はい)] をクリックします。
    SupportSkinCache.png

  4. エンジンを 再起動 して、DX12 が有効なエディタを起動し、プロジェクトでレイトレーシングを有効にします。

リアルタイム レイトレーシング機能

レイトレースによるシャドウ

レイトレースによるシャドウ は、環境でのオブジェクトに対するソフト エリア ライティング エフェクトをシミュレートします。つまり、光源のサイズやソースの角度に基づいて、オブジェクトのシャドウはコンタクト サーフェスの近くでさらにシャープなシャドウになり、離れるとソフトになって広がります。

Raster Shadows using Shadowmaps

Ray Traced Soft Shadows

詳細については、レイトレーシングの設定 を参照してください。

レイトレースによる反射

レイトレースによる反射 (RTR) は、反射サーフェス間の反射を生み出す複数バウンスをサポートできる正確な環境反射をシミュレートします。

Screen Space Reflections

Ray Traced Reflections

スクリーン スペース反射 (SSR)、平面反射、さらに反射プローブと比較すると、レイトレースによる反射は、シーン全体をダイナミックにキャプチャします。カメラのビューにないオブジェクト、静的キャプチャでも、反射の中に表現されます。

詳細については、レイトレーシングの設定 を参照してください。

レイトレースによる透過処理

レイトレースによる透過処理 (RTT) は、透明なサーフェスで物理的に正確な反射、吸収、屈折を行うことで、ガラスや液体マテリアルを正確に表現します。

Raster Translucency

Ray Traced Translucency

詳細については、レイトレーシングの設定 を参照してください。

レイトレースによるアンビエント オクルージョン

レイトレースによるアンビエント オクルージョン (RTAO) は、壁のコーナーやエッジのシャドウイング、スキンの割れ目やしわに奥行きを増やすなど、接地したオブジェクトや環境光を遮る領域を正確にシャドウイングします。

Screen Space Ambient Occlusion (SSAO)

Ray Traced Ambient Occlusion (RTAO)

スクリーン スペース アンビエントオクルージョン (SSAO) と比較すると、RTAO はオブジェクトが接地している、シーンに奥行きを加えるなど、間接的に光っている領域で自然に見えるシャドウを生み出します。

詳細については、レイトレーシングの設定 を参照してください。

レイトレースによるグローバル イルミネーション

レイトレースによるグローバル イルミネーション (RTGI) は対象の光源から直接照らされていない領域にリアルタイムでインタラクティブなバウンス ライティングを追加します。

Sky Light Only

Ray Traced Global Illumination

RTGI はデフォルトではオフで、現時点で実験的機能です。有効にするには、ポストプロセス ボリューム をシーンに追加し、レイトレースによるグローバル イルミネーション を有効にする、またはコンソール変数 r.RayTracing.Globalillumination 1 を使用します。

詳細については、レイトレーシングの設定 を参照してください。

ファイナル ギャザリング メソッド

本機能は現在実験的な機能です。

ファイナル ギャザリングによる技術を使って、ランタイム パフォーマンスを取り戻す別のレイトレーシングによるグローバル イルミネーション メソッドが開発されています。この技術は 2 パス アルゴリズムです。元の RTGI メソッドと同様に、最初のフェーズがシェーディング ポイントを配布します。ただし、1 つのピクセルにつきサンプル 1 つの固定レートです。このフェーズの間、スクリーン スペース シェーディング ポイント サンプルの履歴は最高 16 まで保存されます。第 2 フェーズで、アリゴリズムはメソッドの負荷を償却しながら、シェーディング ポイントの履歴への再接続を試みます。

元の RTGI アルゴリズムは、パストレース のグラウンド トゥルース参照をエミュレートしようとし、パストレース結果の実行に類似します。新しいメソッドはパフォーマンスのためにエミュレーションを交換したことで多少の制限が発生します。現在間接ディフューズ GI のシングル バウンスのみに制限され、前のフレームの GI サンプリング データはゴーストの影響を受けやすくなります。

[Types] ドロップダウン メニューを使って、ポストプロセス ボリュームの [Ray Tracing Global Illumination] セクションから [Final Gather (ファイナル ギャザー)] メソッドを有効にします。

一時的なゴースト アーティファクトを抑えるには、以下のコマンドを使用してワールド空間の拒絶基準を修正します。

r.RayTracing.GlobalIllumination.FinalGatherDistance [number of units] 

現時点では、元のシェーディング ポイントから測定したワールド ディスタンスに基づいています。この拒絶基準のデフォルトは 10 単位です。

また、ファイナル ギャザリング メソッドは効果的に機能させるために、以下の設定をポストプロセス ボリュームで使用しなければなりません。

  • Max Bounces (最大バウンス):1

  • Samples Per Pixel (ピクセルごとのサンプル):8

1 を超えた Max Bounce は警告なしに破棄されます。Samples Per Pixel を調整するときに 2 のべき乗 ( 8, 16, 32, 64 など) で増加させるのが最善です。

レイトレーシング機能を使用する

ポストプロセス ボリューム

ポストプロセス ボリューム をシーンで使用して、レイトレーシングおよびパストレーシング機能とプロパティをコントロールします。インテリアとエクステリアに対して異なる領域にボリュームを追加でき、必要な機能と品質レベルを適用できます。これらのボリュームから、レイトレースによる反射、透過処理、グローバル イルミネーション、アンビエントオクルージョンとパストレーサーをコントロールできます。

  1. [Modes (モード)] パネルから、[Post Process Volume (ポストプロセス ボリューム)] を見つけて レベル にドラッグします。

    クリックしてフルサイズ表示。

  1. このボリュームを選択して、[Details (詳細)] パネルの [Rendering Features (レンダリング機能)] で、調整可能なレイトレーシングとパストレーシング機能とプロパティを見つけます。

    クリックしてフルサイズ表示。

詳細については、レイトレーシングの設定 を参照してください。

ライト

レイトレーサーは UE4 で利用可能なすべてのタイプのライトに対するソフトエリアシャドウをサポートします。

Ray Traced Shadows: Directional Light | Source Angle: 0.5357

Ray Traced Shadows: Directional Light | Source Angle: 2.0

次の項目を調整してシャドウのソフトネスをコントロールします。 

  • 指向性ライト で、[Source Angle (ソース アングル)] を設定します。

  • ポイント ライトスポット ライト で、[Source Radius (ソース半径)] を設定します。 

  • 矩形ライト で、[Barn Door Angle (バーンドアの角度)][Barn Door Length (バーンドアの長さ)] を設定して、形状を決め、シャドウのソフトネスをソフトにします。

詳細については、レイトレーシングの設定 を参照してください。

スカイ ライト

スカイ ライト で、[SLS Captured Scene (SLS キャプチャ シーン)] または [SLS Specified Cubemap (SLS 指定キューブマップ)] とレイトレースによるシャドウイングを使用して、レベルにある離れたパーツをキャプチャし、シーンにライトとして適用します。[Cast Raytraced Shadow (レイトレースされたシャドウをキャスト)] をオンにして、シーンでスカイ ライティングを有効にします。  

RT_SkyLight

このシーンでは、単一の HDRI が RTGI とともに使用されて、シーンをライトで照らします。

RTGI とスカイ ライトを連動させるには、RTGI を有効にして、実験的コンソール変数 r.RayTracing.GlobalIllumination.EvalSkylight を使用してスカイ ライティングを評価します。

詳細については、レイトレーシングの設定 を参照してください。

レイトレースによるアンビエント オクルージョン

ポストプロセス ボリューム をシーンで使用して、レイトレース アンビエント オクルージョン をコントロールします。[Ambient Occlusion (アンビエント オクルージョン)] で、エフェクトの [Intensity (強度)][Radius (半径)] を設定して、サイズと強度をコントロールできます。 

Ray Traced Ambient Occlusion Intensity: 0.75

Ray Traced Ambient Occlusion Intensity: 1.0

パフォーマンスおよびデバッグ

GPU 統計情報

コンソール コマンド GPU Stats を使用して、関連するレイトレースによる GPU パフォーマンスをチェックします。有効なレイトレーシング機能の関連情報とその時点のビューでレンダリングするのにかかるフレーム時間が表示されます。 

GPUStats1

D3D12RayTracing 統計情報

コンソール コマンド Stat D3D12RayTracing を使用して、関連するレイトレーシング リソースの使用状況をチェックします。

StatD3D12RayTracing

レイトレーシング デバッグ ビュー モード

レベル ビューポートで、[View Mode (ビュー モード)] ドロップダウンから、[Ray Tracing Debug (レイトレーシング デバッグ)] を選択して、利用可能なデバッグ ビュー モードから選びます。 

クリックしてフルサイズ表示。

ノイズ削減品質を評価する

次の操作を実行して、異なるレイトレーシング エフェクトのノイズ削減品質を評価します。 

  • 一時アンチエイリアス および 被写界深度 (DOF) を無効にする

    • これらの両方とも、Unreal Engine のレンダラでリニア カラー空間で実行されています。これらはなんらかの HDR カラー重み付け手法を実行して、シャドウとハイライトの間のエイリアスを回避します。

  • ノイズ削減ありのピクセルごとの単一サンプルとノイズ削減なしのピクセルごとの単一サンプルを比較する。 

    • 結果はエネルギーの違いのため不正確に見え、ノイズ削減によりシャドウが暗くなりすぎています。しかし、ピクセルごとの単一サンプルは、トーンマッパのノンリニア処理により明るく見えます。 

    • うまく比較するため、ノイズ削減ありのピクセルごとの 単一 サンプルと、ノイズ削減がない、ピクセルごとの 複数 サンプルをテストします。

Denoised Single Sample Per Pixel

Undenoised Multiple Samples Per Pixel

ノイズ削減ありのピクセルごとの単一サンプルは、情報の欠落により完璧になりません。しかし、ノイズ削減なしのピクセルごとの複数サンプルと比較すると、結果に整合性があります。 

また、留意が必要なのが、ノイズ削減はピクセルごとに最大 4 つのサンプルがサポートされ、これにより品質が改善され、ノイズ削減なしのピクセルごとの複数サンプルの結果にさらによく一致することです。

その他の注意事項

  • シーンでのレイトレーシングの有効無効を速く切り替えるにはコマンド r.raytracing.ForceAllRayTracingEffects を使用します。0 はすべてのエフェクトを無効にします。1 はすべてのエフェクトを有効にします。-1 は前の設定を有効にしてプロジェクトで使用します。

追記

マテリアル 

  • マテリアル コストのテスト

    • 複雑なマテリアルはレイトレーシング機能のパフォーマンスに影響を与えることがあります。コンソール コマンド r.RayTracing.EnableMaterials でパフォーマンス インパクトをテストします。

  • レイトレーシング品質スイッチ切り替えノード

    • このノードを使用して、RTGI、RT 反射、RT 透過処理などの機能に影響を与えるようなマテリアルをあまり複雑ではないマテリアルに置き換えることができます。すべてのレイトレーシング エフェクトに影響するグローバルな変更です。

    • この例では Normal ロジック パスがシーンで表示される通りに出力します。レイトレーシング パスはレイトレーシングのエフェクトのために、テクスチャ、法線、ラフネスに高い負荷が追加される RTGI およびリフレクションなどのあまり複雑でないロジックを使用します。

      クリックしてフルサイズ表示。

  • レイトレースによるシャドウをキャスト

    • [Cast Ray Traced Shadows] のチェックボックスを使って、このマテリアルがレイトレースによるシャドウをキャストするか設定することができます。ジオメトリに割り当てたマテリアルの特定の要素がレイトレースによるシャドウをキャストするかどうかを制御するさいに有用です。

反射

  • 反射の内部で複数のバウンスをレンダリングする場合、レイトレーシング反射の負荷が大きくなる場合があります。複数のバウンスがないと、内部に反射したマテリアルは黒く表示されます。r.RayTracing.Reflections.ReflectionCaptures を有効にして、反射キャプチャ アクタをレイトレース反射の最後のバウンスとして使用します。

スライダをドラッグすると単一のバウンス RTR、反射キャプチャ フォールバックを行わない 2 つの RTR バウンス、反射キャプチャ フォールバックを行う単一の RTR バウンスが表示されます。

半透明オブジェクトを反射に含む

Post Process Volume の設定の [Include Translucent Objects] から [Rendering Features] > [Ray Tracing Reflections] を有効にして、透過マテリアルのあるオブジェクトを有効にしてレイトレーシング反射で表示されるようにします。

反射の屈折率 (IOR)

レイトレースによる透過処理を使って、マテリアルの スペキュラ 値を 0 から 1 にして屈折率 (IOR) を制御します。現実世界のマテリアルもこのように IOR が決まります。

IOR Specular Value: 0.0

IOR Specular Value: 0.5

以下のガイドラインを使って、レイトレースによる透過処理で IOR を制御します。

  • Post Process Volume で以下の設定を有効にします。

    • [Rendering Features] > [Translucency] を [Ray Tracing] に設定します。

    • [Rendering Features] > [Ray Tracing Translucency] で [Refraction] を有効にします。

    • [Rendering Features] > [Ray Tracing Translucency] で [Max Refraction Rays] をマテリアルの逆側も十分に確認できる高さにバウンスを設定します。たとえば、シングル バウンスではオブジェクトの裏側を確認するには不十分ですが、数回ならば十分かもしれません。

マテリアル インスタンスを使ってスペキュラ値を操舵して IOR を調節します。

スカイ ライト

天空など、遠くのオブジェクトのキャプチャリングは必要な場合以外はスカイライトに対して無効にします。パフォーマンスの改善とシーンの最適化につながります。UE4 の BP_SkySphere の場合、このオプションはデフォルトで無効になっているため、空から反射を行うと期待したものと異なります。[Details (詳細)] パネル プロパティの [Visible in Ray Tracing (レイトレーシングで表示)] のチェックボックスで有効と無効を切り替えて、オブジェクトの効果を調節します。

レイトレーシング機能の最適化

  • 反射と透過性の最大ラフネスを設定する

    • Max Roughness を使って、マテリアル上でのレイトレースによる反射の閾値を設定します。これはポストプロセス ボリューム内、またはコンソール コマンド r.RayTracing.Reflections.MaxRoughness を使用して実行できます。

  • グローバル イルミネーション、反射、透過処理で最大レイトレース距離を設定する

    • これは各機能に対して最大レイトレース距離を設定し、シーンでのコストと寄与度を低下させます。

    • コンソールで、各レイトレース機能に対する MaxRayDistance コンソール変数を設定します。r.RayTracing.* に変数があります。

  • RTGI の最適化

    • [Screen Percentage] と [Sample Per-Pixel] のデフォルトはそれぞれ「50」と「4」になりました。別のデフォルト値を使用するには、コンソール コマンドの r.RayTracing.GlobalIllumination.ScreenPercentager.RayTracing.GlobalIllumination.SamplesPerPixel を使用します。

    • GI へのライト効果は、ライトの Affect Global Illumination プロパティで有効無効の切り替えができます。

レイトレーシングでのジオメトリの注意事項

  • フォーリッジやフェンスなど、小さな穴や細かな凹凸があるジオメトリはパフォーマンスに影響を与えることがあります。 

  • 室内環境は室外よりもレンダリングが遅くなります。

    • 例えば、外から光が入るとき、直接光が当たる領域は、間接に光が当たる点より速くなります。 

    • また、反射や透過処理など、レイトレーシング機能が使用されている場合にさらに考慮する必要があります。

サポートされているレイトレーシング機能

このリストは現時点でサポートされている内容を示すものであり、Unreal Engine 4.23 でサポートされるレイトレーシング機能の包括リストではありません。

機能

サポート (あり/なし/一部)

追記

レンダリング パス

ディファード

あり

フォワード

なし

ライトの種類

指向性ライト

あり

スカイ ライト

あり

ポイント ライト

あり

スポット ライト

あり

矩形ライト

あり

ライティング機能

エミッシブ サーフェス

一部

サーフェスでの反射はサポート、光の放出やシャドウのキャストは未サポート

光伝達

なし

透過処理シャドウは不透明型として処理されます。つまりマテリアルを通じた、色のないシャドウやライトの伝達です。

エリア シャドウイング

あり

IES Profiles

あり

ライト関数

なし

ボリュメトリック フォグ

なし

イメージ ベースド ライティング (IBL)

あり

スカイライトで HDRI をサポート。

マテリアル:ブレンド モード

不透明型

あり

マスク

あり

4.22.1 ホットフィックスで、マスクされたマテリアルがサポート対象となりました。

透過処理

一部

シャドウは不透明型とみなされます。

マテリアル:シェーディング モデル

デフォルト ライティング

あり

ライティングなし

一部

マスク

一部

マスクされたシャドウのキャストをサポート

サブサーフェスとサブサーフェス プロファイル

あり

Preintegrated Skin

一部

動作しますが、結果が正確にレイトレースされていません。ラスタ パイプラインを使用します。

クリア コート

あり

両面フォリッジ

あり

ヘア

一部

動作しますが、結果が正確にレイトレースされていません。ラスタ パイプラインを使用します。

クロス

一部

動作しますが、結果が正確にレイトレースされていません。ラスタ パイプラインを使用します。

マテリアル関数

あり

両面

あり

ワールド位置オフセット

あり

スタティックメッシュはアクタごとに有効にされます。

ジオメトリ タイプ

スケルタルメッシュ

あり

スタティックメッシュ

あり

ジオメトリ キャッシュ (Alembic)

あり

ランドスケープ

あり

階層インスタンス スタティック メッシュ (HISM)

あり

インスタンス メッシュ (ISM)

あり

スプライン

なし

プロシージャルなメッシュ

あり

このジオメトリ タイプはレイトレーシングでレンダリングすると高負荷の場合があります。

BSP ブラシ

なし

レベルオブディテール (LOD)

あり

LOD の遷移時のディザリングは未サポート。

ビジュアル エフェクト (VFX)

Niagara

一部

スプライトとメッシュがサポートされるようになりました。

カスケード

なし

プラットフォーム サポート

マルチビュー (VR と分割画面)

あり

タグ
Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信