1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unreal Engine (UE)Advent Calendar 2024

Day 3

UEでPIXを利用してシェーダデバッグ

Last updated at Posted at 2024-12-11

はじめに

レンダリングのプロファイルツールは皆さんご存じのRenderDocを利用することが多いと思います。
ただ、UE5のRHIのデフォルトがDirectX 12になったことでシェーダデバッグができなくなりました。
自分の知らない解決策があるかもですが。。。知ってる人がいたら教えてください。

この記事ではkafues511さんの記事「【UE5】PIXでピクセルデバッグ – Unreal Engine 5.4」を参考にPIXでシェーダデバッグできるようになるまで手順を記載します。

環境

Windows 11 Pro
UE 5.5.0
PIX 2409.23

PIXとは?

勉強中です。。。公式に譲ります。

PIXのインストール

下記からダウンロード&インストールしてください。

PIXの環境変数の設定

kafues511さんの記事を参考に環境変数のPathを設定してください。
例)C:\Program Files\Microsoft PIX\2409.23

この設定を省略すると後述のr.D3D12.AutoAttachPIX=1.iniファイルに設定してもUEのビューポートの右上にPIXのアイコンが表示されません。

UE0001.png

PIXの初期設定

Win11の「開発者モード」を有効に

Win0001.png

この設定がないとPIXでキャプチャ後、ResourcesDeveloper mode must be enabled on this device ...と表示されて適切に利用できません。

PIX0002.png

NVIDIA コントロールパネルを設定する。

こちらを参考に
(1)「開発者設定を有効にする」にチェックを入れます。
NVIDIA0001.png
(2)「GPUパフォーマンス カウンタへのアクセスをすべてのユーザーに許可する」にチェックを入れます。
Win0002.png

この設定がないとPIXでキャプチャ後、Start analysisをクリックすると下記のダイアログが表示されます。

PIX0003.png

UEの設定

プロジェクト側のDefaultEngine.ini、またはUserEngine.iniに下記を追加します。

UserEngine.ini
[ConsoleVariables]
r.D3D12.AutoAttachPIX=1

UserEngine.iniは複数プロジェクトで.iniの設定を参照したいときに有効です。
C:\Users\{ユーザ名}\AppData\Local\Unreal Engine\Engine\Config\UserEngine.ini

また、シェーダのシンボルなどを有効にするため、エンジン側のEngine\Config\ConsoleVariables.iniの一部コメントを解除します。

ConsoleVariables.ini
; Uncomment to get detailed logs on shader compiles and the opportunity to retry on errors, and enable showing shader warnings
r.ShaderDevelopmentMode=1
; Uncomment when running with a graphical debugger (but not when profiling)
; r.Shaders.Optimize=0 ; UE 5.5.0で有効にするとクラッシュする
; When this is enabled, shaders will have extra debugging info. This could change patch sizes, uniqueness, etc and will recompile the shaders
r.Shaders.Symbols=1
; When this is enabled, ShaderName field of FRHIShader will be populated (Development and Debug builds only). 
r.Shaders.ExtraData=1
; Uncomment to skip shader compression. Can save a significant time when using debug shaders.
r.Shaders.SkipCompression=1

r.Shaders.Optimize=0のコメントを解除するとシェーダーコンパイルでクラッシュします。
ue5-mainでもクラッシュしていたので、その内に修正されるのを期待。。。

r.Shaders.SkipCompression=1ECVF_CheatフラグでAssertになる(クラッシュはしない)のを気にしない人はUserEngine.iniにこの設定を記述しても動作します。

PIXでプロファイル

アタッチ

RenderDocと同様にビューポートの右上にアイコンが表示されて、クリックするとキャプチャできますが、
詳細な情報が出てなさそうなので、PIXからのアタッチした方が良い気がします。多分。。。

任意のプロジェクト起動後、PIXのAttachにUnrealEditorが表示されるので選択してAttachボタンを押します。
PIX0004.png

キャプチャ

アタッチが完了するとGPU Captureボタンが押せるようになるので、エディタでプロファイルしたい画面にしてカメラアイコンを押します。
PIX0005.png

キャプチャされたサムネが表示されるのでクリックするとそれっぽい画面が表示されます。
PIX0006.png

シェーダデバッグ

Click hereをクリックすると解析が始まります。

解析が完了後、Pipelineタブでプロファイルしたいパスをキーワードで検索して、
任意のテクスチャのピクセルを選択してDebug Pixelをクリックすると
PIX0007.png
下記のような感じでシェーダに飛べます!
めでたしめでたし。
PIX008.png

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?