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

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

Windows
MacOS
Linux

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

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

Epic Games Launcher から Archviz Interior サンプル プロジェクトのレイトレーシング機能のリアルタイム レンダリングを使用することができます。

Unreal Engine のレイトレーシング

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

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

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

レイトレーサー

レイトレーサーを使うと、プロジェクトにおいてシャドウ、AO、反射、透過処理、インタラクティブ グローバル イルミネーションのすべてに対して、リアルタイムでのレイトレースを可能にします。グラウンド トゥルースに近い結果と認識する、ノイズ削減アルゴリズムと組み合わせて、少ない数のサンプルを使用することで実行します。

パストレーサー

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

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

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

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

システム要件

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

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) は、複数バウンスをサポートできる正確な環境反射をシミュレートします。

この例は、単数回のレイトレースによる反射を 1 回バウンスさせた場合と複数回バウンスさせた場合の比較です。複数回バウンスさせると、シーン内での反射面の間にリアルタイムの内部反射が作成されます。

Ray Traced Reflection Single Bounce

Ray Traced Reflections Multiple Bounces

対照的に、Screen Space Reflections (SSR) アクタ、Planar Reflections アクタ、Reflection Capture アクタは動的にシーン全体をキャプチャできず、こうした他の反射メソッドに存在する制限もありません。

この比較において、SSR は 1 回の反射バウンスのみ可能であり、画面上での視覚的な表現に制限があります。一方、RTR は複数回のバウンスが可能であり、視覚表現に制限もありません。つまり、本の側面、カメラの後ろ側で反射する床、窓を通過して差し込んで床で反射する追加の光を見ることができます。

Screen Space Reflections

Ray Traced Reflections

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

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

Raster Translucency

Ray Traced Translucency

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

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

Screen Space Ambient Occlusion (SSAO)

Ray Traced Ambient Occlusion (RTAO)

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

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

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

Scene Lighting Only

Ray Traced Global Illumination | Brute Force Method

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ポストプロセス ボリューム をシーンで使用して、レイトレーシングおよびパストレーシング機能とプロパティをコントロールします。インテリアとエクステリアに対して異なる領域にボリュームを追加でき、必要な機能と設定を適用できます。

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

使用可能なポストプロセス設定の詳細については、「レイトレースの設定 」を参照してください。

ライト

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

Ray Traced Shadows: Directional Light | Source Angle: 0.5357

Ray Traced Shadows: Directional Light | Source Angle: 1.25

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

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

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

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

スカイ ライト

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

RT_SkyLight

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

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

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

Ray Traced Ambient Occlusion | Intensity: 0.5

Ray Traced Ambient Occlusion | Intensity: 0.85

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

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)

レイトレーシングに屈折を設定および使用するとき、Specular マテリアル入力を使用して透過マテリアルで屈折または IOR を調節します。Unreal Engine のレイトレーシング機能は、スペキュラ値および IOR 値が組み合わさっており別々に定義することができない Disney BRDF model に続くものです。

マテリアルのスペキュラ値を定義し、ポストプロセス値で屈折プロパティを設定するとき、透過マテリアルに対して IOR を適切に調節することができます。

Raster Translucency | with faked Refraction

Ray Traced Translucency | with Refraction

マテリアル設定:

  • マテリアルの [Two Sided] を有効にする

    • これは必須ではありませんが、片面/非多様体ジオメトリは、ボリューム トラッキングや光伝達のスタックをうまく処理できません。両面マテリアルは正確な結果を提供し、レイ トレーシングによる透過性を使用する場合、すべての透過マテリアルを処理するための推奨方法です。

  • [Lighting Mode]Surface Translucency Volume または Surface Forward Shading に設定します。

  • Specular 入力を使って屈折率を調整します。

    • Refraction 入力はレートレースによる透過マテリアルに影響を与えません。

ポストプロセス ボリューム レンダリング機能の設定:

  • [Translucency] カテゴリで、[Type][Ray Tracing] に設定します。

  • [Ray Tracing Translucency] カテゴリで、以下の設定を行います。

    • Refraction: Enabled

    • Max Refraction Rays: 使用する光線の最大数を設定します。別の側まで光が通過できるように十分高い値を設定します。

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

屈折率を調節する

発生する屈折率と光の移動は、マテリアルの Specular 入力とポストプロセス ボリュームの Max Refraction Rays および Refraction を使って調節することができます。

以下の透過マテリアルは、スペキュラ値 0.04 を使って、マテリアルに光を通すために最大 6 本の屈折光線を使用しています。以下の比較では、透過マテリアルに対して屈折を有効/無効にした場合の違いを示しています。

Ray Tracing Refraction: | Disabled

Ray Tracing Refraction: | Enabled

Specular 入力に適用した様々な値が透過マテリアルの屈折率に影響を与えます。

スライダーをドラッグすると、0.01、0.05、0.1 に適用される屈折量が示されます。

ポストプロセス ボリュームの Max Refraction Rays プロパティの様々な値もマテリアルへの光の移動に影響します。単一の光線ではマテリアルを避けるのに十分ではないので、暗くなります。光線の数を増やすと、屈折したガラスを通してオブジェクトを見ることができます。ただし、使用する光線の数によっては、暗いままの領域もあります。光線を増やすと、確実にボリュームを避けることができます。

スライダーをドラッグすると、1、3、5 屈折光線の結果が示されます。

片面マテリアルの屈折

片面マテリアルを使用することでレイトレース屈折を行うことが可能できますが、結果は物理的に正確な結果を示す両面マテリアルに類似するものの同等ではありません。

Ray Traced Translucency | Single Sided Material | with Refraction

Ray Traced Translucency | Two Sided Material | with Refraction

ポストプロセス ボリューム プロパティ Max Refraction Rays は、片面と両面のマテリアルに使用して、ライトがボリューム内を移動するようにできます。ただし、正しい結果が表示されるのは両面マテリアルのみであり、レイ トレーシング機能を使って すべての 透過マテリアルを処理するための推奨方法です。

サブサーフェス プロファイル マテリアル用に光の伝達

光源の Transmission プロパティが有効にされていると、サブサーフェス プロファイル マテリアル上での光の伝達が可能です。

Raster Subsurface Profile | Light Transmission

Ray Tracing Subsurface Profile | Light Transmission

レイトレーシング シャドウ演算処理中、媒体を通して、シャドウを投影するライトまでの予想されるボリュメトリック スキャタリング距離のを計算するために、散乱シミュレーションが実行されます。スキャタリング距離は、イン スキャタリング効果を計算するためにライティング中に使用されます。

スカイ ライト

天空など、遠くのオブジェクトのキャプチャリングは必要な場合以外はスカイライトに対して無効にします。パフォーマンスの改善とシーンの最適化につながります。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 プロファイル

あり

ライト関数

なし

ボリュメトリック フォグ

なし

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

あり

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

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

Opaque

あり

Masked

あり

Translucent

あり

Anisotropic

あり

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

デフォルト ライティング

あり

ライティングなし

一部

マスク

一部

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

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

あり

Preintegrated Skin

一部

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

Clear Coat

あり

UE 4.25 では Clear Coat シェーディング モデルに対して大幅な改善が行われました。

両面フォリッジ

あり

ヘア

一部

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

クロス

一部

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

マテリアル関数

あり

両面

あり

ワールド位置オフセット

あり

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

ジオメトリ タイプ

スケルタルメッシュ

あり

スタティックメッシュ

あり

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

あり

ランドスケープ

あり

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

あり

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

あり

スプライン

なし

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

あり

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

BSP ブラシ

なし

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

あり

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

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

ナイアガラ

一部

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

カスケード

なし

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

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

あり

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback