RenderDocを使ってDirect3D12アプリをデバッグ
シンプルなシェーダーでも正しく動いているのかデバッグするのは難しいです。 最初はPIXを使ってデバッグをしようと思い試してみたのですが、コンスタントバッファの中身は見えても、VertexShaderの頂点データが見えなくて、 設定が悪いのだろうかと思いつつ、ChatGPT先生に聞いてみると、困ったときはRenderDocを使え、という回答だったので、半信半疑でRenderDocを使うことにしました。
RenderDocはあっさりと動きました。特に何も設定することなく、VertexShaderの頂点データも見えましたし、シェーダーのステップ実行とかも問題なく動きました。
VertexShaderのデバッグ方法は以下のような感じです。
- ExecutablePathにデバッグしたいアプリを指定
- Launch ボタンでアプリを実行
- Caputure Frame(s) Immediately ボタンで1フレーム分をキャプチャ
- キャプチャされた画像をダブルクリック
- 左側にあるEventBrowserから、デバッグしたいDrawIndexedInstancedなどの描画コマンドを選択
- Pipeline State タブでバッファの中身を見る
- Mesh Viewerタブで VSInputとVSOutputの頂点データを見る
- Mesh Viewerタブで特定の頂点データを選択し、右クリックで、Debug this vertex を選択
- シェーダーのアセンブラが表示されるので、F10 でステップ実行、Shift+F10で戻る
簡単に使えて、よくできていると思います。