OpenGLのプログラムをRenderDocで見てみる
はじめに
この記事はシリーズ記事です。目次はこちら。
この記事ではデバッグのためのRenderDocの使い方をメモします。
RenderDoc
OpenGLのプログラムを作ってきましたが、このプログラムが思うように動作しないということにも何度も直面すると思います。 その際にアプリケーションに色々と解析用のプログラムを書き加えてデバッグするのはなかなかつらいものがあります。
そこでRenderDocです。
自分の作ったOpenGLなどのプログラムを指定するだけで簡単にレンダリングの様子を解析できる素晴らしいツールです。
使い方
Launch Applicationから解析したいプログラムとそのプログラムのWorking Directoryを指定してLaunchします。
Launchするとアプリケーションが立ち上がるので、F12を押してフレームをキャプチャできます。
キャプチャしたフレームについて次のように色々と解析できます。
まずはGPUの描画命令を一つずつ見ていく機能です。 Texture Viewerの左側のEvent Browserをクリックしていくことで途中のパスでの描画がどうなっているかを確認できます。
各パスのInputのテクスチャとOutputの様子をテクスチャビューワーで確認できます。
InputのG-Bufferがどうなっているかとかも確認できます。
アウトプットが複数ある場合もそれぞれのアウトプットについて描画されたものを見ることができます。
Texture Viewerではデフォルトで0-1の範囲を描画していますが、これを0-100などとすることでHDRな画像も解析できます。
Texture ViewerのOverlayではメッシュのワイヤーフレームや、デプステストステンシルテストが通ったか落ちたか、などなど様々な情報がひと目見てわかります。
次の画像はこのパスでDepthテストに通った部分が緑色で示されています。 デプステストで落ちる場合は赤色で示されることになります。
Pipeline Stateでは各パイプラインの状態やUniform変数などの情報を閲覧できます。
描画がうまく行かないときにUniform変数がうまく渡せていないのか、Uniform変数は渡せているがシェーダが間違っているのかなどを切り分けできて良いです。
Mesh Viewerでは頂点シェーダの入力と出力、ジオメトリシェーダの出力のメッシュの確認ができます。
だいたいこのあたりの機能がわかっていれば、デバッグに必要なことはだいたい分かると思います。