BLOGブログ

2022.04.24UE5

【UE5】DumpGPUコマンドで描画をデバッグする

執筆バージョン: Unreal Engine 5.0

こんにちは。エンジニアの小倉です。
今回は、DumpGPUコマンドによって使用できる GPU Dump Viewerについて紹介します。

1. GPU Dump Viewerについて

GPU Dump ViewerはUE5で新たに追加されたグラフィックスの問題を調査するためツールで、各描画パスにおけるフレーム・バッファの状態を確認することができます。従来このようなグラフィックスデバッグには、プラットフォームごとに使用できるグラフィックスデバッガー(例えばWindowsの場合はRenderDocやNSightなど)を使う必要がありましたが、GPU Dump Viewerはマルチプラットフォームを想定したツールとのことで、プラットフォームによってツールを準備する手間が大幅に削減されると考えられます。

また、GPU Dump Viewerはコマンド1つでキャプチャ作業が完結するため、スクリーンショットを撮るような気軽な気持ちで使うことができます。キャプチャで得られる情報はスクリーンショットよりもずっと多いため、突発的に起きた描画バグなどにも対処しやすくなるなどのメリットがあります。

2. 使用方法

コマンドで DumpGPU と入力すると、フレームをキャプチャすることができます。

フレームをキャプチャすると、キャプチャのフォルダが表示されます。OpenGPUDumpViewer.batファイルを開くと、GPU Dump Viewerでキャプチャの内容を確認できます。GPU Dump ViewerはChromeを使用するため、インストールされていない環境では、インストールを促すダイアログが表示されます。
余談ですが、フレームのキャプチャはテクスチャの情報を多く含むため、ファイルサイズが大きくなりがちです。試しに4K環境でキャプチャしてみましたが、サイズは3.7GBになりました。描画パスの内容や解像度にもよりますが、快適に行いたい場合はSSDなどを使用したほうがよさそうです。

GPU Dump Viewerを使うと、以下のような画面が表示されます。画面の左側にあるパネルが描画パスの一覧になります。
各パスを開くと、そのパスに入力・出力されたリソースを表示することができます。例えば以下はDownsampleパスを選択したときの状態ですが、Input resourcesには「Scene(1/16) mip0」というリソースがあり、これは一つ前のDownsampleパスで出力されたものを使用していることがわかります。また、Output resourcesには「Scene(1/32) mip0」というリソースがあり、Downsampleパスで行われた処理によって「Scene(1/16) mip0」を半解像度化したものであることがわかります。

また、GPU Dump Viewerではキャプチャ時の様々な情報が記録されています。
「Infos」では、エンジンバージョン情報や、ハードウェア情報、スクリーンショットなどが記録されています。

「CVars」では、コンソール変数の状態が記録されています。

「Log」では、キャプチャする前のログが記載されています。

3. 他のグラフィックスデバッガーとの使い分け

GPU Dump Viewerによって手軽に様々な情報を得ることができますが、パスがまとまって中身が見ることができないなど、少し気になる挙動も見受けられました。最初に類似のツールとしてRenderDocを挙げましたが、RenderDocはシェーダーのステップ実行のような高度な機能も備えています。
どちらにもメリットはあるので、問題に合わせてツールを使い分けていくのがよいと思われます。