Verification checklist (検証チェックリスト)
このトピックでは、RenderStream と Unreal Engine を扱う方に向けた推奨プラクティス情報を扱います。
- ValidationFramework プラグイン が有効になっており、潜在的な nDisplay/RenderStream の問題をチェックできます。
- サポートされるバージョン
- UE4.27+: v1.0.1 のみサポート: ✅
- UE5.0: テスト中: ❗
- UE5.1: v1.1.0+ サポート: ✅
- UE5.2: v1.2.0+ サポート: ✅
- UE5.3: v1.3.0+ サポート: ✅
- 必要なプラグインがすべてプロジェクトディレクトリーにあり、有効になっていることを確認します。
Channel Definitions
Section titled “Channel Definitions”特定のシーン内の各 Cine Camera Actor(シネカメラ)に RenderStreamChannelDefinitions が追加されています。
Frontplate(フロントプレート)
Section titled “Frontplate(フロントプレート)”- フロントプレートのカメラが Default Visibility Hidden に設定されています。
- フロントプレートに追加するすべてのコンポーネントが Force Visible セクションに追加されています。
- フロントプレートのカメラで以下が無効(チェックなし)になっています。
- Fog
- Atmosphere
ソース管理へのプッシュの準備
Section titled “ソース管理へのプッシュの準備”ソース管理へのプッシュの前、特に変更を加えた後は、d3 経由で RenderStream を起動して Unreal シーンをテストする必要があります。 フレームドロップを確認します。
- オペレーターのカメラ移動中
- 公開パラメーターをトリガーするとき
- すべての公開パラメーターをテストします。
d3 内の RenderStream レイヤーを介してトリガーし、nDisplay/RenderStream がこれらのパラメーターをアーティストの意図どおりに処理していることを確認します。
すべてのフロントプレートオブジェクトをテストし、アーティストの意図どおりにレンダリングされていることを確認します。
これらのオブジェクトは、特定のライティングをアタッチし、バックプレートとフロントプレートの両方でオブジェクトが正しいライティング条件を維持できるように、Actor Blueprint として構築する必要がある場合があります。例は以下を参照してください。
すべてのビューモードを順に確認し、明らかな問題がないかチェックします。
ビューモードの詳細については、Epic のドキュメントを参照してください。
最適化に最も関連するビューモードには次のものがあります。
- Light Complexity
- Lightmap Density
- Stationary Light Overlap
- Shader Complexity
- Stationary Light Overlap
- Shader Complexity & Quads
- Quad Overdraw
問題が解決しない場合は、Unreal Insights を使って診断します。
Unreal Insights(UE4.26)に関するドキュメントは Epic のこちらで入手できます。
Derived Data Cache
Section titled “Derived Data Cache”Disguise での DDC の構成については、DDC ページを参照してください。
DDC Pak
Section titled “DDC Pak”Epic Games Store から Unreal Engine をダウンロードすると、エンジンには DDC Pak(.ddp)が付属します。DDC Pak にはすべてのエンジンコンテンツの派生データが含まれているため、シェーダーのコンパイルなどを行わずに作業を開始できます。同様に、一部のサンプルも同じ理由で DDC Pak とともに提供されます。
- Engine DDC Pak
例: EngineDir/DerivedDataCache/Compressed.ddp
- Project DDC Pak
例: ProjectDir/DerivedDataCache/Compressed.ddp
プロジェクトのビルド
Section titled “プロジェクトのビルド”プロジェクトをビルドする際の考慮事項。
ライティングがアタッチされた Actor Blueprint の例:
ライティングがアタッチされた Actor Blueprint
最適化は、次のような複数の変数(ただしこれらに限定されない)の影響を受ける複雑な題材です。
メッシュ Actor とライティング Actor の Mobility ステータス
レンダー設定
マテリアルの複雑さ
使用される Parent Material と Material Instance の量。
メッシュの複雑さ(UE5 の場合は Nanite メッシュかどうかも)
ライティング Actor の複雑さ/シーン内のライティング Actor の数。
最適化の推奨事項
Section titled “最適化の推奨事項”Oodle Texture 圧縮を使用します。
Lumen を使用する場合、レンダリングカメラのビューに基づいて光が計算される性質上、タイルレンダリングを使用すると継ぎ目が現れる場合があります。
Screen-Space Global Illumination は問題ないはずです(この設定は Project Settings > Global Illumination > Dynamic Global Illumination Method で変更します)。
Post Processing Volume を使用する場合は、PostProcessingVolume Actor の Global Illumination でチェックボックスをオンにし、Screen Space に変更してこの設定を変更します。
できるだけ多くのライトを GPU ベイクし、Ray Tracing の使用を避けることを検討します。
できるだけ少ないライトを使用します。
Rect Light を使用する必要がある場合は、多用しすぎず、必ずベイクします。
不要な場合は、個々の Light Actor の下でシャドウをオフにします。
Reflection capture には512より高い解像度は必要ありません。
Temporal Super Resolution について学び、使用する際はスクリーンパーセンテージを下げます。
TAA を使用している場合は、Temporal Upsampling を使用します。
開発中に使用できる優れたツールをいくつか紹介します。
UE stat コマンド
すべての stat コマンドのリスト: https://docs.unrealengine.com/5.4/en-US/stat-commands-in-unreal-engine/
描画コール数を最適化する
Section titled “描画コール数を最適化する”「UE[4] はシーンの可視性を計算し、フレームの最終画像に表示されないオブジェクトをカリングします。ただし、カリング後のシーンに依然として数千のオブジェクトが含まれている場合、描画コールがパフォーマンスの問題になる可能性があります。ポリゴン数の少ないメッシュをレンダリングしても、描画コールが多すぎると、GPU 用に各描画コールをセットアップする CPU 側のコストのために、主要なパフォーマンスのボトルネックになる可能性があります。UE4 と GPU ドライバーはどちらも描画コールごとに処理を行います。
ただし、描画コールの削減はバランスの取れた作業です。多数の小さなメッシュの代わりに少数の大きなメッシュを使って描画コールを削減することにした場合、小さなモデルから得られるカリングの粒度を失います。」
- 描画コールを減らすために Actor を結合することを検討します。
- 1つのマテリアル ID を持つ50個のメッシュよりも、50個のマテリアル ID を持つ1つのメッシュのほうが優れています(51 対 100)。
- コンソール変数エディターを使用します。
現場での全般的なアドバイス
Section titled “現場での全般的なアドバイス”-
プレイヤーがオブジェクトを見ることができないなら、レンダリングする必要はありません。
-
木はシーンを埋め尽くす場合に特に大きな課題になります。木は描画コールに影響します。複数のマテリアルスロットを持つハイポリのアセットは問題になります。
-
視覚的な LOD システムを使うことが1つの解決策になります。カメラに近いほど高品質なアセットを、背後には低品質なものを配置します。一方、背景には樹木の並びのテクスチャプレーンが便利です。
-
また、すべてのシャドウをオフにしてから体系的に戻していくことで、望ましい効果とより軽量なプロジェクトを作ることができます。その結果ハイライトが平坦に見える場合を補うため、Directional Light のライト関数を変更して、わずかな葉の影を疑似的に作るのに役立てることができます。
-
シーン内で時間帯が変化しない場合は、Atmospheric Sky と Volumetric Clouds を unlit シェーダーを持つ球体に置き換えるのが良い解決策です。
-
Volumetric fog は次の方法で改善できます。
-
View Distance space の調整
-
次のコンソールコマンドの使用:
r.VolumetricFoc.GridPixelSizer.VolumetricFog.DepthDistributionScaler.VolumetricFog.GridSizeZ
-