🐼
Unity ShaderLabのVisualStudioデバッグ
はじめに
UnityのShaderLabをデバッグしたく調査したときの備忘録。
ほとんどこちらのサイトの内容。
ステップ実行について触れていなかったのでそこについて方法記載。
環境
| ツール |
|---|
| Microsoft Visual Studio Community 2022 |
| Unity 2019.4.31f1 |
準備(Unity側)
- デバッグするシェーダは検索しやすい名前にする
名前
Shader "PandaTest/PandaUnlit"
{
...
}
- デバッグするシェーダーにデバッグ用コードを入れる
デバッグ用コード
Pass{
CGPROGRAM
#pragma enable_d3d11_debug_symbols
...
ENDCG
}
- Unityアプリのビルド
準備(VisualStudio側)
- プロジェクト作成とデバッグ設定
以下に従う
https://docs.unity3d.com/2019.3/Documentation/Manual/SL-DebuggingD3D11ShadersWithVS.html
デバッグ
-
開始

-
フレームキャプチャ

-
フレーム選択

新規ウィンドウが表示される

-
各種画面表示
イベント一覧、ピクセル履歴、パイプラインステージ画面を表示する

-
シェーダー特定
イベント一覧で指定したシェーダー名で検索

-
イベント指定
オブジェクト:x->DrawIndexedをクリック
頂点シェーダー(vertexシェーダー)デバッグ
パイプラインステージの頂点シェーダーに各IDXに対する再生ボタンが出るのでクリックしたらシェーダーコードが表示され、ステップ実行デバッグできる。


ピクセルシェーダー(fragmentシェーダー)デバッグ
- ピクセル選択
レンダーターゲットから描画したいピクセルをクリック
ピクセル履歴に情報が表示される

- シェーダー選択
DrawIndexed => 三角形[x] -> ピクセルシェーダ―の再生をクリック
シェーダーコードが表示され、ステップ実行でデバッグできる。

ジオメトリシェーダーデバッグ
ジオメトリシェーダー有のシェーダーであればイベント一覧、パイプラインステージ、ピクセル履歴にジオメトリシェーダーの項目増えているのでそこから同様にデバッグできる


参考
Discussion