mcpField
U
unity-shadergraph

unity-shadergraph

github.com/besty0728開発1.9k77 回インストール今日更新
リポジトリ

unity-shadergraph について

unity-shadergraphは、UnityのShader GraphおよびSub Graphアセットを調査・編集するスキルモジュールです。ライブのグラフ構造とバージョン固定のノード許可リストに基づき、編集範囲を制限します。

主な機能

  1. 01テンプレートとグラフアセットの一覧表示
  2. 02グラフ構造とプロパティの確認
  3. 03グラフとサブグラフの作成
  4. 04対応ノードの追加・移動・接続
  5. 05プロパティとキーワードの編集
  6. 06グラフアセットの再インポート

活用シーン

  1. 01ノード編集前のグラフ構造確認
  2. 02対応ノードを使ったグラフ構築
  3. 03グラフのプロパティやキーワードの更新

MCP 対応

READMEはUnityスキルについて説明していますが、このモジュールとMCPの関係は明記していません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-shadergraph

インストール後、Claude Code で/unity-shadergraphを入力して読み込まれたか確認します。

詳細

このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からパラメーター定義をすでに取得している場合は、そのまま dryRun に進めます。

トリガー

  • Shader Graph の作成
  • グラフ構造の確認
  • ブラックボード/ノードの制御された編集
  • Shader Graph の作成、構造の確認、ブラックボード/ノードの制御された編集

ShaderGraph スキル

Unity 2022.3 以降を対象とした Shader Graph アセットのワークフローです。ソースに基づくテンプレート処理、MultiJson の確認、制約付きの内部エディターへのリフレクション書き込みに対応しています。

動作モード

  • クエリスキル(shadergraph_list_templates、shadergraph_list_assets、shadergraph_get_info、shadergraph_get_structure、shadergraph_list_supported_nodes、shadergraph_list_properties、shadergraph_list_keywords)は SkillMode.SemiAuto です。許可なしで、3 つのモードすべてで実行されます。
  • その他すべての変更スキル(グラフ/サブグラフの作成、ノードの追加/移動/接続/切断、ノードのデフォルト値/設定の変更、プロパティ/キーワードの追加/更新、再インポート)は SkillMode.FullAuto です。Approval モードではユーザーの許可が必要です(許可するとサーバー側で一度実行され、結果が返されます)。Auto/Bypass モードでは直接実行されます。
  • shadergraph_remove_node、shadergraph_remove_property、shadergraph_remove_keyword は SkillOperation.Delete が指定されており、Approval/Auto モードでは自動的に禁止されます(NeverInSemi)。実行できるのは Bypass またはユーザーが管理する Allowlist のみです。

リフレクションの脆弱性

このモジュールはリフレクションを介して UnityEditor.ShaderGraph と UnityEditor.ShaderGraph.Internal にアクセスします(ShaderGraphReflectionHelper.cs と ShaderGraphNodeRegistry.cs を参照)。サポート対象ノードのホワイトリスト、スロットの構成、設定キーは com.unity.shadergraph 14.0.x(Unity 2022.3)にバージョン固定されており、Unity 6 の対応範囲は限定的です。以下を厳守してください。

  • 内部型、フィールド、スロット ID が存在すると記憶だけで判断してはいけません。必ず事前に shadergraph_list_supported_nodes と shadergraph_get_structure で確認してください。
  • Shader Graph パッケージの更新で内部型や MultiJson スキーマが変更された場合、レジストリが更新されるまで変更スキルが失敗したり、何もせずに終了したりすることがあります。
  • スキルがリフレクション/型検索の失敗を示すエラーを返した場合、引数の形式を変えて再試行してはいけません。バージョンの不一致を報告して停止してください。

ガードレール

振り分け:

  • HLSL テキストシェーダー:shader_* を使用します
  • Shader Graph/Sub Graph アセット:このモジュールを使用します
  • グラフ構成を提案する前に、ソースに基づく設計指針を確認する場合は shadergraph-design を読み込みます

実行時の基本ルール:

  • ノード単位の編集を行う前に、必ず shadergraph_get_structure を呼び出してください。返された nodeId と slotId のみを有効な識別子として扱います
  • スロット名、ノード ID、テンプレートの有無を記憶だけで捏造してはいけません
  • shadergraph_set_node_defaults が適用されるのは未接続の入力スロットのみです。スロットが接続されている場合は、先に接続を解除してください
  • shadergraph_set_node_settings が書き込めるのは、shadergraph_list_supported_nodes で公開されているホワイトリスト内の項目のみです
  • PropertyNode がバインドできるのは、既存のブラックボードプロパティのみです。先に shadergraph_add_property でプロパティを作成してください
  • SubGraph の編集は通常のノードに限られます。このモジュールでは SubGraphOutputNode の構造は編集できません

検証済みの動作:

  • Unity 2022.3 と [email protected] には GraphTemplates/ が含まれていません。shadergraph_create_graph は空のグラフを作成する方式にフォールバックします
  • Unity 6 の ShaderGraph パッケージには実際のテンプレートディレクトリが含まれる場合があります。その場合、テンプレートの一覧表示とテンプレートをコピーした作成を引き続き利用できます
  • サポート対象ノードのサブセットは実行時にフィルタリングされます。ライブ検証で共通してサポートされているノードは 28 個で、現在 AppendVectorNode に対応しているのは Unity 6 のみです

スキル

shadergraph_list_templates

インストール済みパッケージに含まれる Shader Graph テンプレートを一覧表示します

shadergraph_create_graph

パッケージのテンプレートまたは空のフォールバックから、Shader Graph アセットを作成します。

shadergraph_create_subgraph

出力スロットを設定した空の Shader Sub Graph アセットを作成します。

shadergraph_list_assets

プロジェクト内の Shader Graph アセットと Sub Graph アセットを一覧表示します。

shadergraph_get_info

Shader Graph または Sub Graph アセットの概要を取得します。

shadergraph_get_structure

実際のグラフ構造を調べます。実際の nodeId、position、slots、edges、properties、keywords を返します。

shadergraph_list_supported_nodes

制限付きのノード許可リスト、対応バージョン、スロット、編集可能な設定を一覧表示します。

shadergraph_add_node

nodeType で対応ノードを追加します。初期設定と位置を任意で指定できます。

shadergraph_remove_node

シリアル化された nodeId でノードを削除します。関連するエッジもまとめて削除されます。

shadergraph_move_node

シリアル化された nodeId でノードを移動します。

shadergraph_connect_nodes

nodeId + slotId を使用して、特定の出力スロットを特定の入力スロットに接続します。

shadergraph_disconnect_nodes

同じ 4 要素の組を使用して、特定のエッジを切断します。

shadergraph_set_node_defaults

接続されていない入力スロットのデフォルト値を設定します。

shadergraph_set_node_settings

許可リストにあるノード設定のみを書き込みます。

shadergraph_list_properties

グラフのブラックボードプロパティを一覧表示します。

shadergraph_add_property

制限付きのブラックボードプロパティを追加します。

shadergraph_update_property

制限付きのブラックボードプロパティを更新します。

shadergraph_remove_property

グラフプロパティを削除します。

shadergraph_list_keywords

グラフのブラックボードキーワードを一覧表示します。

shadergraph_add_keyword

グラフキーワードを追加します。

shadergraph_update_keyword

グラフキーワードを更新します。

shadergraph_remove_keyword

グラフキーワードを削除します。

shadergraph_reimport

外部で編集した後、Shader Graph アセットの再インポートを強制します。

ワークフロー

  1. 対象のグラフを作成するか、見つけます。
  2. shadergraph_get_structure を読み取ります。
  3. 必要に応じて、最初にブラックボードプロパティまたはキーワードを作成します。
  4. shadergraph_list_supported_nodes を呼び出し、ノードタイプ、設定の許可リスト、スロット構成を確認します。
  5. ノードを追加または移動し、実際の nodeId/slotId の値を使用して接続または切断します。
  6. 次の手順がトポロジーに依存する場合は、重要な編集を行うたびに shadergraph_get_structure を再度読み取ります。

正確なシグネチャ

正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく GET /skills/schema または unity_skills.get_skill_schema() で定義されています。

コメント