Language:
Page Info
Skill Level:
Engine Version:

RayTraced Distance Field Soft Shadows

DistanceFieldShadowing_Header.jpg

Movable Light (可動ライト) ソースからのシャドウイングは、それぞれの剛体メッシュに対して Distance Field オブジェクトを使用して、動的な光源からの効率的なエリア シャドウイングを計算することで表現されます。アンリアル エンジン 4 (UE4) ではこの機能は
Ray Traced Distance Field Shadows (RTDF) と呼ばれます。シャドウイングを計算するために、シーンの Signed Distance Fields (SDF) (符号付きディスタンス フィールド) を使用して、シェーディングされるポイントから各ライトに向かってレイ (光線) がトレースされます。 遮蔽オブジェクトへの最短距離を使用して、レイトレースとほぼ同じ負荷のコーン トレースを近似します。球体をした光源からの エリア シャドウイングをきれいに行うことができます。

シーンの設定

この機能を使うには、[Project Settings (プロジェクト設定)][Rendering] セクションで [Generate Mesh Distance Fields (メッシュ ディスタンス フィールドの生成)] を有効にする必要があります。詳細は、メッシュ ディスタンス フィールドNEW! ページを参照してください。

Ray Traced Distance Field Shadowing を有効にするには、ライト をシーンにドラッグし [Mobility] を [Movable] に設定します。 そして、ライトの [Details] パネルで [Ray Traced Distance Field Shadows] を有効にします。

DirectionalLightDFSettings1.png

ステップごとの操作については Ray Traced Distance Fielf Shadowing を使うNEW! をご覧ください。

エリア シャドウイングの設定

それぞれのライト タイプは Distance Fields シャドウを使ってソフトエリア シャドウを投影します。これらのシャドウは、現実世界の影をシミュレートしています。 シャドウは、ベースに近くなるほど鮮明に、遠くに延びるにつれてソフトになります。

Traditional Shadow Map

Distance Field Shadow

スカイライトの設定の詳細およびその他のサンプルは、メッシュ ディスタンス フィールド リファレンス を参照してください。

ポイントライトとスポットライトのソース半径

ポイントライトとスポットライトの場合は、Source Radius (ソース半径) を使用して、ポイントライトのシャドウの半暗部の大きさを決定します。エリア シャドウは、近づくにつれ鮮明になり、 遠ざかるとソフトになるように計算されます。ポイントライトおよびスポットライト上では、黄色い球体で表されます。

LightSourceVis.jpg

エディタは光源の形状を黄色の線で描画します。

ライトのソース半径は、シーンに交差しないようにしてください。そうしないと、アーティファクトを生じます。

Source Radius: | 0

Source Radius: | 50

Ray Traced Distance Field シャドウは、 玄関、ベンチ、ピアノからキャストされたシャドウをソフトにするために Source Radius を使って Point Light から投影されます。

A demonstration of a Point Light moving through the scene casting area shadows from each shadow casting mesh.

ポイントライトとスポットライトの設定の詳細は、メッシュ ディスタンス フィールド リファレンスNEW! を参照してください。

指向性ライトの光源のアングル

指向性ライトの場合、Light Source Angle を使用して、指向性ライトのシャドウの半暗部の大きさを決定します。Ray Traced シャドウには自己交差の問題はほとんどありません。 したがって、従来のシャドウマッピングに蔓延していた遠方での漏れと過剰バイアスを回避します。

Light Source Angle: | 1

Light Source Angle: | 3

Light Source Angle をソフトなシャドウ用に調節した指向性ライトから Ray Traced Distance Field シャドウを投影した場合

多くの場合、指向性ライトでは、動的シャドウイングを表現するために Cascaded Shadow Maps (CSM) が使用されています。このため、カスケード シャドウ マップ (シャドウイング用の LOD) では、 シーン内のメッシュをいくつかのカスケード シャドウ マップにレンダリングする必要があります。シャドウイングの負荷は、シャドウの距離が長くなると急激に上昇します。 これはシャドウ マップにレンダリングされるメッシュとトライアングル数が増えるためです。

Ray Traced Distance Field シャドウは、可視ピクセルに対してのみシャドウイング処理を行うため、遠方では非常にうまく機能します。RPDF シャドウが設定されている Distance Field Shadow Distance まで投影するのに対して、 Cascaded Shadow Map はカメラに近い領域に影を投影します。

Cascaded Shadow Maps Only

Cascaded Shadow Maps & Ray Traced Distance Field Shadows

Ray Traced Distance Field シャドウを有効にすると、 Cascaded Shadow Map Distance に対して設定した値を超えるシャドウが Distance Field によって投影されるようになります。CSM と RTDF シャドウイングの両方を使って比較しましょう。 CSM シャドウを 1,000 CM (センチメートル) に設定すると、ディテールが多数追加されてカメラ付近のシャドウにはさまざまなディテールが追加されて鮮明になります。1,000 CM を超えると、RTDF によるシャドウイングが使用され、 1.2 KM (キロメートル) 先までシャドウ オブジェクトの投影が可能になります。これらによって、Cascaded Shadow Map では負荷が大きすぎた、木のシャドウの遠方への投影が可能になります。

指向性ライトの Ray Traced Distance Field シャドウイングによって表現した 1 日の変化

指向性ライトの設定の詳細は、メッシュ ディスタンス フィールド リファレンスNEW! を参照してください。

シーンの表現

各レベルは、配置したアクタに対してすべてこれらの Mesh Distance Field で構成されて作成されます。Mesh Distance Field は、 結果をボリューム テクスチャに格納するトライアングルのレイトレースを使って「オフライン」で生成されます。このため、メッシュ ディスタンス フィールド生成をランタイム時に行うことはできません。このメソッドは、一番近いサーフェスを見つけてその情報を格納するために、 Signed Distance Field の光線をすべての方向で計算します。

ビューポートで [Show] > [Visualize] > [Mesh Distance Fields] を選択すると、シーンを表現する Mesh Distance Fields を視覚化することができます。

視覚化を有効にするメニュー

Mesh Distance Field の視覚化

画像をクリックしてフルサイズ表示

画像をクリックしてフルサイズ表示

グレイよりも白が多いエリアが表示された場合、メッシュ サーフェスの交差判定に多くのステップが必要となります。サーフェスに対するグレージング角の光線を交差させるには、 シンプルなメッシュの作成よりも作業手順が多くなります。

メッシュ ディスタンス フィールドの品質

ディスタンス フィールドの忠実度は、Distance Field Ambient Occlusion よりもシャドウの精度に大きな影響を及ぼします。 Mesh Distance Field 解像度を高くするとスタティックメッシュから投影されるシャドウの質が上がります。品質のチェックには [Mesh Distance Field Visualization] を使います。

Distance Field Resolution: | 1

Distance Field Resolution: | 5

Distance Field Resolution: | 1

Distance Field Resolution: | 5

Distance Field Shadowing のシーン ビュー

Mesh Distance Field の視覚化

Mesh Distance Field のシャドウは、深度に配慮したアップサンプリングによって 1/2 解像度で計算されます。Temporal Anti-Aliasing (TAA) は、1/2 解像度によるフリッカーを減らすうえで非常に効果的ですが、 シャドウのジャギーは表示されることがあります。

メッシュ ディスタンス フィールドの品質の詳細は、メッシュ ディスタンス フィールドNEW! を参照してください。

パフォーマンス

以下の GPU のタイミングは、フルゲーム シーンにおいて解像度 1920x1080、Radeon 7870 で行われます。

テスト

Cascaded/Cuebmap Shadow Maps Cost (ms)

Distance Field Shadows による負荷 (ms)

速度比 (%)

指向性ライトが 10k ユニット、6 x Cascaded Shadow Maps の場合

3.1

2.3

25%

指向性ライトが 30k ユニット、6 x Cascaded Shadow Maps の場合

4.9

2.8

43%

半径の大きいポイントライト 1 つ

1.8

1.3

30%

半径の小さいポイントライト 5 つ

3.2

1.8

45%

最適化

以下は Distance Field シャドウイングの最適化と検討、あるいは必要な場合に行う操作です。

  • 指向性ライトは、光源の角度が大きくなるほど負荷が高くなります。それぞれの投影ポイントに対して考慮すべきオブジェクトが増えるからです。

  • Distance Field Shadow Distance の値が大きくなれば、カリングの効率が低下します。

  • Two-Sided Distance Field Generation (Build Settings で有効にする) を使用しているメッシュからの投影すると負荷が高くなります。投影したシャドウが完全な不透明にはならないからです。

4.16 では、以下の最適化機能が有効になりました。

  • [Project Settings] > [Rendering] で有効にします。

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

    • [Compress Mesh Distance Fields] を有効にすると、Distance Fields ボリューム テクスチャを圧縮してメモリに格納することができます。これにより、メモリ使用量は減りますが、 レベル ストリーミングを使用している場合は、レベルのストリーミング時にゲームプレイで処理落ちが発生します。

    • Eight Bit Mesh Distance Fields は、Distance Fields ボリュームを 16-bit 浮動小数点ではなく 8-bit 固定小数点形式で 保存するかどうかを設定します。メモリは半分しか使用しませんが、大きいメッシュ、または薄いメッシュがあるとアーティファクトが発生します。

制限事項

Ray Traced Distance Field Soft Shadows が Mesh Distance Fields 技術の一般的な制限と同じになりました。これらの制限の詳細については、 メッシュ ディスタンス フィールドNEW! をご覧ください。