はじめに
レンダリングのプロファイルツールは皆さんご存じの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のアイコンが表示されません。
PIXの初期設定
Win11の「開発者モード」を有効に
この設定がないとPIXでキャプチャ後、Resources
にDeveloper mode must be enabled on this device ...
と表示されて適切に利用できません。
NVIDIA コントロールパネルを設定する。
こちらを参考に
(1)「開発者設定を有効にする」にチェックを入れます。
(2)「GPUパフォーマンス カウンタへのアクセスをすべてのユーザーに許可する」にチェックを入れます。
この設定がないとPIXでキャプチャ後、Start analysis
をクリックすると下記のダイアログが表示されます。
UEの設定
プロジェクト側のDefaultEngine.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
の一部コメントを解除します。
; 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=1
がECVF_Cheat
フラグでAssertになる(クラッシュはしない)のを気にしない人はUserEngine.ini
にこの設定を記述しても動作します。
PIXでプロファイル
アタッチ
RenderDocと同様にビューポートの右上にアイコンが表示されて、クリックするとキャプチャできますが、
詳細な情報が出てなさそうなので、PIXからのアタッチした方が良い気がします。多分。。。
任意のプロジェクト起動後、PIXのAttachにUnrealEditor
が表示されるので選択してAttachボタンを押します。
キャプチャ
アタッチが完了するとGPU Captureボタンが押せるようになるので、エディタでプロファイルしたい画面にしてカメラアイコンを押します。
キャプチャされたサムネが表示されるのでクリックするとそれっぽい画面が表示されます。
シェーダデバッグ
Click here
をクリックすると解析が始まります。
解析が完了後、Pipelineタブでプロファイルしたいパスをキーワードで検索して、
任意のテクスチャのピクセルを選択してDebug Pixel
をクリックすると
下記のような感じでシェーダに飛べます!
めでたしめでたし。