🐼

Unity ShaderLabのVisualStudioデバッグ

2022/06/16に公開

はじめに

UnityのShaderLabをデバッグしたく調査したときの備忘録。
ほとんどこちらのサイトの内容。
ステップ実行について触れていなかったのでそこについて方法記載。

環境

ツール
Microsoft Visual Studio Community 2022
Unity 2019.4.31f1

準備(Unity側)

  1. デバッグするシェーダは検索しやすい名前にする
名前
Shader "PandaTest/PandaUnlit"
{
	...
}
  1. デバッグするシェーダーにデバッグ用コードを入れる
デバッグ用コード
Pass{
	CGPROGRAM
	#pragma enable_d3d11_debug_symbols
	...
	ENDCG
}
  1. Unityアプリのビルド

準備(VisualStudio側)

  1. プロジェクト作成とデバッグ設定
    以下に従う
    https://docs.unity3d.com/2019.3/Documentation/Manual/SL-DebuggingD3D11ShadersWithVS.html

デバッグ

  1. 開始

  2. フレームキャプチャ

  3. フレーム選択

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

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

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

  6. イベント指定
    オブジェクト:x->DrawIndexedをクリック

頂点シェーダー(vertexシェーダー)デバッグ

パイプラインステージの頂点シェーダーに各IDXに対する再生ボタンが出るのでクリックしたらシェーダーコードが表示され、ステップ実行デバッグできる。

ピクセルシェーダー(fragmentシェーダー)デバッグ

  1. ピクセル選択
    レンダーターゲットから描画したいピクセルをクリック

ピクセル履歴に情報が表示される

  1. シェーダー選択
    DrawIndexed => 三角形[x] -> ピクセルシェーダ―の再生をクリック

シェーダーコードが表示され、ステップ実行でデバッグできる。

ジオメトリシェーダーデバッグ

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

参考

https://www.natsuneko.blog/entry/2020/05/24/use-visual-studio-debugger-in-shader-development

Discussion