mcpField
U
unity-shader

unity-shader

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

unity-shader について

unity-shader は、Unity の手書き ShaderLab/HLSL ファイルを扱うスキル群です。シェーダーの作成や検査に対応し、URP 用テンプレートも利用できます。ShaderGraph は別モジュールです。

主な機能

  1. 01.shader ファイルの作成と読み取り
  2. 02シェーダーの一覧表示と検索
  3. 03プロパティ、キーワード、バリアント情報の確認
  4. 04シェーダーのコンパイルエラー確認
  5. 05URP Unlit または Lit シェーダーの作成
  6. 06グローバルキーワードの有効・無効化

活用シーン

  1. 01手書きシェーダーのソース作成や確認
  2. 02プロジェクト内のシェーダーを探してプロパティ定義を確認
  3. 03シェーダーエラーやバリアント関連情報を調査
  4. 04グローバル Shader キーワードの切り替え

MCP 対応

README には MCP との関係について記載がありません。

インストール

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

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

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

詳細

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

トリガー

  • 手書きのシェーダーの作成または編集
  • .shader ファイルの一覧表示または検索
  • プロパティ/キーワードの確認
  • 手書きの shader の作成または編集、.shader ファイルの一覧表示/検索、プロパティとキーワードの確認

Unity Shader スキル

.shader の HLSL/ShaderLab ファイルを操作します(テンプレートからの作成、ソースの読み取り、一覧表示、検索、キーワード/プロパティ/バリアントの取得、エラー確認、削除、グローバルキーワードの切り替え)。ノードベースの ShaderGraph には shadergraph モジュールを使用してください。

動作モード

  • スキルの照会(shader_read、shader_list、shader_find、shader_get_properties、shader_check_errors、shader_get_keywords、shader_get_variant_count)は SkillMode.SemiAuto です。許可がなくても3つすべてのモードで実行できます。
  • 変更を行うスキル(shader_create、shader_create_urp、shader_set_global_keyword)は SkillMode.FullAuto です。Approval ではユーザーの許可が必要です(許可するとサーバー側で1回実行され、結果が返されます)。Auto/Bypass では直接実行されます。
  • shader_delete には SkillOperation.Delete が設定されており、Approval/Auto モードでは自動的に禁止されます(NeverInSemi)。Bypass またはユーザー管理の Allowlist でのみ実行できます。

ガードレール

禁止事項(よくある誤り):

  • shader_set_property は存在しません → シェーダーではなく、マテリアルに対して material_set_float/material_set_color などを使用してください
  • shader_apply/shader_assign は存在しません → マテリアルのシェーダーを変更するには material_set_shader を使用してください
  • shader_get_properties が返すのはシェーダーのプロパティ定義(名前/型/範囲)であり、現在の値ではありません → マテリアルインスタンスの値を取得するには material_get_properties を使用してください
  • シェーダー名では大文字と小文字が区別され、パス形式です。"Standard"、"Universal Render Pipeline/Lit" を使用し、"standard" や "URP Lit" は使用しないでください

使い分け:

  • マテリアルのプロパティ変更 → material モジュールを使用
  • シェーダーキーワードの制御 → material モジュールの material_set_keyword
  • グローバルシェーダーキーワード → このモジュールの shader_set_global_keyword

スキルの概要

スキル説明
shader_createシェーダーファイルを作成
shader_readシェーダーソースを読み取り
shader_listすべてのシェーダーを一覧表示
shader_find名前でシェーダーを検索
shader_deleteシェーダーファイルを削除
shader_get_propertiesシェーダーのプロパティを取得
shader_check_errorsシェーダーのコンパイルエラーを確認
shader_get_keywordsシェーダーキーワードの一覧を取得
shader_get_variant_countパフォーマンス分析用にシェーダーバリアント数を取得
shader_create_urpテンプレートから URP シェーダーを作成
shader_set_global_keywordグローバルシェーダーキーワードを有効化または無効化

スキル

shader_create

シェーダーファイルを作成します。template パラメーターは、.shader ファイルにそのまま書き込まれる生のシェーダーソースコードです。プリセット名ではありません。template="Standard" を渡すと、文字列 Standard がそのままディスクに書き込まれ、シェーダーのコンパイルに失敗します。

パラメーター型必須デフォルト説明
shaderNamestringはい-Shader "..." 宣言に書き込むシェーダー名(例:"Custom/MyShader")
savePathstringはい-保存先のパス(例:"Assets/Shaders/My.shader")
templatestringいいえnullShaderLab/HLSL のソース文字列全体。省略した場合は、組み込みの Unlit テンプレート(_MainTex + _Color、単一の CGPROGRAM パス)が使用されます。他の組み込みプリセットはありません。

URP の Unlit/Lit プリセットには、代わりに shader_create_urp(type: "Unlit" | "Lit")を使用してください。名前でテンプレートが実際に選択されます。

shader_read

シェーダーのソースコードを読み取ります。

ParameterTypeRequiredDescription
shaderPathstringYesシェーダーアセットのパス

Returns: {path, lines, content}

shader_list

プロジェクト内のすべてのシェーダーを一覧表示します。

ParameterTypeRequiredDefaultDescription
filterstringNonull名前のフィルター
limitintNo100結果の最大数

Returns: {count, shaders: [{path, name, propertyCount}]}

shader_find

名前でシェーダーを検索します。

ParameterTypeRequiredDescription
searchNamestringYes検索するシェーダー名

Returns: {found, name, path}

shader_delete

シェーダーファイルを削除します。

ParameterTypeRequiredDescription
shaderPathstringYesシェーダーアセットのパス
shader_get_properties

シェーダーで定義されているすべてのプロパティを取得します。

ParameterTypeRequiredDescription
shaderNameOrPathstringYesシェーダー名またはシェーダーアセットのパス

Returns: {success, shaderName, propertyCount, properties: [{name, type, description}]}

shader_check_errors

シェーダーにコンパイルエラーがないか確認します。

ParameterTypeRequiredDefaultDescription
shaderNameOrPathstringYes-シェーダー名またはアセットのパス(例:"Custom/MyShader" または "Assets/Shaders/My.shader")

Returns: { shaderName, hasErrors, messageCount }

shader_get_keywords

シェーダーのキーワード一覧を取得します。

ParameterTypeRequiredDefaultDescription
shaderNameOrPathstringYes-シェーダー名またはアセットのパス(例:"Custom/MyShader" または "Assets/Shaders/My.shader")

Returns: { shaderName, keywordCount, keywords: [{ name, type }] }

shader_get_variant_count

パフォーマンス分析用にシェーダーのバリアント数を取得します。

ParameterTypeRequiredDefaultDescription
shaderNameOrPathstringYes-シェーダー名またはアセットのパス(例:"Custom/MyShader" または "Assets/Shaders/My.shader")

Returns: { shaderName, subshaderCount, totalPasses }

shader_create_urp

テンプレートからURPシェーダーを作成します(タイプ:UnlitまたはLit)。

ParameterTypeRequiredDefaultDescription
shaderNamestringYes-シェーダー名(例:"Custom/MyURPShader")
savePathstringYes-保存先のパス(例:"Assets/Shaders/MyURP.shader")
typestringNo"Unlit"テンプレートのタイプ:"Unlit"または"Lit"

Returns: { success, shaderName, path, type }

shader_set_global_keyword

グローバルシェーダーキーワードを有効または無効にします。

ParameterTypeRequiredDefaultDescription
keywordstringYes-グローバルシェーダーキーワード名
enabledboolYes-有効にする場合はtrue、無効にする場合はfalse

Returns: { success, keyword, enabled }


使用例

import unity_skills

# Create an unlit shader
unity_skills.call_skill("shader_create",
    shaderName="Custom/MyUnlit",
    savePath="Assets/Shaders/MyUnlit.shader",
    template="Unlit"
)

# Create a surface shader
unity_skills.call_skill("shader_create",
    shaderName="Custom/MyPBR",
    savePath="Assets/Shaders/MyPBR.shader",
    template="Standard"
)

# Read shader source
source = unity_skills.call_skill("shader_read",
    shaderPath="Assets/Shaders/MyUnlit.shader"
)
print(source['content'])

# List all custom shaders
shaders = unity_skills.call_skill("shader_list", filter="Custom")
for shader in shaders['shaders']:
    print(f"{shader['name']}: {shader['path']}")

ベストプラクティス

  1. シェーダー名の付け方を統一します(Category/Name)
  2. シェーダーを専用フォルダーに整理します
  3. テンプレートから始め、必要に応じて変更します
  4. さまざまな照明条件でシェーダーをテストします
  5. ビルド時にはモバイルとの互換性を考慮します

正確なシグネチャ

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

コメント