レンダリング依存関係グラフ

レンダリング依存関係グラフは、レンダリング パイプラインの全フレーム最適化を実行するために設計されたグラフベースのスケジューリング システムです。

Choose your operating system:

Windows

macOS

Linux

Unreal Engine 4.23 では、Rendering Dependency Graph (RGD) の基礎となる実装はまだ開発中であり、このページで説明するパフォーマンス上の利点の多くが不足しています。ただし、API は安定しており、レンダラーは完全に RDG に移植されています。また、新しいレンダリング機能はすべて RDG を使用して記述されています。

レンダリング依存関係グラフ は、RDG またはレンダー グラフとも呼ばれ、レンダー パイプラインの全フレーム最適化を実行するように設計されたグラフベースのスケジューリング システムです。また、DirectX 12 などの最新の API を利用して、自動非同期計算スケジューリングと、より効率的なメモリおよびバリア管理によってパフォーマンスを向上します。

DirectX 11 および OpenGL スタイルの API では、GPU 上で重要なスケジューリング操作をいつどのように実行するかを決定するために、ドライバが複雑なヒューリスティックを呼び出す必要があります。たとえば、キャッシュのフラッシュ、メモリの管理と再利用、レイアウト遷移の実行などがあります。即時モードのインターフェースでは、すべてのエッジ ケースを処理するために、複雑なブックキーピングと状態追跡が必要となり、最終的にパフォーマンスに悪影響を与え、並列処理を妨げることになります。

DirectX12、Vulkan、Metal 2 などの最新のグラフィックス API は、このモデルから移行し、低レベル GPU 管理の負荷をアプリケーション自体に移行することを選択しています。これは、レンダリング パイプラインの高レベルのコンテキストを利用してスケジューリングを駆動することによりパフォーマンスを改善し、レンダリング スタックを単純化する機会を提供します。

RDG の概念は以下のように機能します。GPU 上ですぐにパスを実行する代わりに、実行はフレーム全体が依存関係グラフのデータ構造に記録されるまで延期されます。すべてのパスが収集されると、グラフがコンパイルされ、依存関係でソートされた順序で実行されます。

依存関係グラフのデータ構造の全体的な知識と最新のグラフィックス API の能力を組み合わせることで、RDG はユーザーに対して完全に透過的に、見えないところで複雑なスケジューリング タスクを実行することができます。

  • 非同期計算パスの自動スケジューリングとフェンシングを実行します。

  • フレームが切り離されている間、リソース間でエイリアス メモリをアクティブに保ちます。

  • パイプラインの停滞を回避するために、バリアとレイアウトの移行を早期に開始します。

さらに、RDG は依存関係グラフを利用してパス設定時に豊富な検証機能を提供し、機能とパフォーマンスの両方に影響を与える問題を自動的に検出することで開発プロセスを改善します。

追記およびリソース

  • 多くの例を含む RDG の使用に関するクラッシュ コースについては、次の Power Point スライド資料を参照してください。 RDG101:クラッシュ コース

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる