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で戻る

簡単に使えて、よくできていると思います。