水ノ茉の宣伝
準備中...
ゲームを作る予定なの水ノ茉
始まり
以前、ピクセルデバッグ手順を紹介しました。
想定外の不具合やUE独自の描画機能を追う際に非常に便利なピクセルデバッグ機能。
この時はRenderDocさんを使いましたね。
実はこの子…
特定環境ではピクセルデバッグが封印され、使用できません。

レンダリング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さん独りではありません。
以下は一例です。
- RenderDoc
- PIX
- NVIDIA Nsight Graphics
今回は2番目のMicrosoftが提供しているPIXというデバッグツールを使用する方法のご紹介です。
RenderDoc v1.36からDirectX12がサポート

作業環境
- Windows 10, 11
- Unreal Engine 5.3, 5.4
- RenderDoc Version v1.35
- PIX version 2409.23
PIXとは?
読んで。

PIXをインストール
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さんルートの攻略を進めた感じ。
アニメ調で要求される技術は基本的にはクリアしてるから、リアル調とかいう魔境しか残ってない。
アニメ調はそれはそれで魔境なんだけど、物理を考慮しなくていいから筆者みたいなバカには割と相性がいい。

