【UE5】PIXでピクセルデバッグ – Unreal Engine 5.4

Unreal Engine

水ノ茉の宣伝

準備中...
ゲームを作る予定なの
水ノ茉こおり

始まり

以前、ピクセルデバッグ手順を紹介しました。

想定外の不具合やUE独自の描画機能を追う際に非常に便利なピクセルデバッグ機能。

この時はRenderDocさんを使いましたね。

実はこの子…

特定環境ではピクセルデバッグが封印され、使用できません。

Unreal Engine & Unity URP ピクセルデバッグ手順
作業環境Windows 10Unreal Engine 5.3Unity 2021.3.37f1Core RP Library 12.1.14Universal RP 12.1.14Visual Studio 2022 (17.8.3)Vi...

レンダリングAPIをDX12、シェーダーモデルをSM6に変更

封印される環境を再現してみましょう。

デフォルトのグラフィックスAPIをDirectX 12に変更します。

レイトレについても触れたいので、シェーダーモデルはSM6を含んで下さい。

設定変更後に再起動を要求された場合は従ってください。

RenderDocはDX12だとピクセルデバッグできない

設定変更後にRenderDocでキャプチャします。

すると…

ピクセルデバッグの起点であるDebugボタンがグレーアウトされています。

ボタンにカーソルを合わせて暫くすると以下のメッセージが表示されました。

The current pixel shader does not support debugging: Debugging DXIL is not supported

理由はさておき、RenderDocはDX12でピクセルデバッグをサポートしていません。

RenderDocをアタッチするとレイトレースが使えない

同業なら分かると思いますがデバッグ機能が封印された程度なら割と頑張れます。

シェーダーを書き換えれば結果は反映されるので、総当たりという手段が残っています。

開発イテレーションはゴミだけどね。

RenderDocとDX12の組み合わせの一番の問題はデバッグ機能ではありません。

レイトレースがサポートしなくなる点です。

分かりやすい例としてレイトレシャドウが封印されています。

ライトコンポーネントからCast Ray Traced Shadowsを覗いてみるとグレーアウトされていますね。

RenderDocのアタッチを切って再起動してみましょう。

グレーアウトが解除され、レイトレシャドウが選択できるようになっています。

使い分け

レイトレを使わない環境であれば、通常開発時はDX12、ピクセルデバッグが必要な時だけDX11に一時的に切り替えで乗り切れます。

では、レイトレを使う環境の場合はどうするでしょうか。

RenderDocさん以外にも幾つかプロファイラツールは存在しているので別の子に頼りましょう。

PIXという選択肢

プロファイラツールはなにもRenderDocさん独りではありません。

以下は一例です。

  1. RenderDoc
  2. PIX
  3. NVIDIA Nsight Graphics

今回は2番目のMicrosoftが提供しているPIXというデバッグツールを使用する方法のご紹介です。

RenderDoc v1.36からDirectX12がサポート

The current pixel shader does not support debugging: Debugging DXIL is not supported
始まり昔々のRenderDocがv1.36以前の話です。ピクセルデバッグの有効化手順を踏んでも、Debugボタンがグレーアウトされ、暫くフォーカスすると、以下のメッセージが表示されました。The current pixel shader d...

作業環境

  • Windows 10, 11
  • Unreal Engine 5.3, 5.4
  • RenderDoc Version v1.35
  • PIX version 2409.23

PIXとは?

読んで。

PIX on Windows
Performance tuning and debugging for DirectX 12 games on Windows
キャプチャ例

PIXをインストール

PIX on Windows
Performance tuning and debugging for DirectX 12 games on Windows

PIXの公式サイトに飛びます。

Download PIX now > Click here to visit our Download page.をクリック

最新バージョンのインストーラをダウンロードします。

ダウンロードしたインストーラを起動します。

2番目は必須なのでチェックを入れます。

3番目は任意なのでチェックなしでも。

必要な項目にチェックを入れたらInstallをクリック

筆者の環境だと2分ぐらい掛かりました。

インストールが完了したらCloseをクリック

環境変数の設定

環境と検索

環境変数を編集をクリック

新規(N)…をクリック

新規(N)をクリック

参照(B)…をクリック

C:\Program Files\Microsoft PIX\2409.23を選択してOKをクリック
2409.23はPIXのバージョンで変わるためインストールしたものを選択

C:\Program Files\Microsoft PIX\2409.23が追加されていることを確認

OKをクリックして環境変数名の編集ウィンドウを閉じる

環境変数ウィンドウもOKをクリックして閉じる

環境変数の変更を確実に適用するためPCを再起動

PIXをアタッチ

プロジェクト側のConfigフォルダからDefaultEngine.iniを開きます。

[/Script/Engine.RendererSettings]r.D3D12.AutoAttachPIX=1を記載

PIXでキャプチャ

UEを起動した後にPIXを起動します。

unrealと検索
※PIXを先に起動した場合はヒットしないのでRefreshをクリックして更新を掛ける

UnrealEditorを選択してAttachをクリック

アタッチに成功すればGPU Captureの色が濃くなる。

UEでキャプチャしたい画面にフォーカスを合わせてPrint Screenキーを押下

キャプチャが成功するとサムネイル画像がポンッと出現

サムネイル画像をクリックして適当に遊ぶとRenderDocで見慣れた画面構成

リソースが可視化できない場合はStart analysisをクリック

ピクセルデバッグも当然できる。

なんならRenderDocと異なりinoutが含まれているシェーダーコードでも、アセンブリにならずにHLSLコードで出力してくれる。

おわり!!!

RenderDoc、PIX、NVIDIA系、Razorなど、開発環境に応じて適当なプロファイラツールを使い分けたいですね。

雑談

最近はレイトレースと遊ぶことも増えました。

ライトシャフト的な影の品質が明らかに向上するの面白いですよね。

この辺りをやるにあたりPIXさんルートの攻略を進めた感じ。

アニメ調で要求される技術は基本的にはクリアしてるから、リアル調とかいう魔境しか残ってない。

アニメ調はそれはそれで魔境なんだけど、物理を考慮しなくていいから筆者みたいなバカには割と相性がいい。

VSM
RayTracingShadow