Unity Shader Generator について
Unity Shader Generatorは、Unityプロジェクト向けにShaderLab/HLSLのシェーダーとマテリアル設定手順を生成するスキルです。一般的な視覚効果に対応し、レンダーパイプラインに合わせたコードとモバイル最適化を扱います。
主な機能
- 01Unityのレンダーパイプライン検出
- 02ShaderLab/HLSLシェーダーの生成
- 03一般的な視覚効果への対応
- 04マテリアル設定手順の提示
- 05モバイル向け最適化
活用シーン
- 01ディゾルブや輪郭効果の作成
- 02ホログラム、水面、力場シェーダーの作成
- 03URPまたはHDRP向けシェーダーの設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ juliankerignard/ unity-skills --skill unity-shader-generatorインストール後、Claude Code で/unity-shader-generatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/hlsl-utils.mdshader-templates.mdshader-recipes.md詳細
Unity Shader Generator
このスキルでできること
プロジェクトのレンダーパイプラインに合わせた、完全な Unity シェーダー(.shader ファイル)を生成します。dissolve、outline、toon、hologram、force field、water、triplanar、vertex displacement など、一般的なエフェクトに対応しています。モバイル向けに最適化された、整った HLSL/ShaderLab コードと、Material のセットアップ手順を作成します。
前提条件
Packages/manifest.jsonを含む既存の Unity プロジェクト- 使用するエフェクトに関する知識(テキストでの説明またはビジュアルリファレンス)
Assets/フォルダーへの書き込みアクセス
判断フロー
Type de shader demande ?
|
+-- Effet sur un materiau (dissolve, outline, toon, hologram) ?
| +-- --> Recettes dans references/shader-recipes.md
|
+-- Post-processing / fullscreen effect ?
| +-- URP 6.3+ --> Fullscreen Shader Graph (prefere, zero code)
| +-- URP custom --> Custom render pass avec Render Graph API
| +-- HDRP --> Custom Pass Volume
|
+-- Custom render pass (injection dans le pipeline) ?
| +-- Unity 6+ --> Render Graph API (RecordRenderGraph)
| +-- Pre-Unity 6 --> ScriptableRenderPass.Execute (deprecie)
|
+-- Modification de vertices (displacement, wind, snow) ?
+-- --> Vertex shader avec noise (voir references/hlsl-utils.md)
クイックスタート
- ユーザーが目的のエフェクトを説明します(例:「発光する縁取り付きの dissolve シェーダー」)
- スキルがプロジェクトのレンダーパイプラインを検出します
- スキルが
.shaderファイルと Material の設定手順を生成します
手順ガイド
ステップ 1:目的のエフェクトを特定する
ユーザーのリクエストを分析します。既知のレシピからエフェクトを分類します:
- Dissolve:しきい値による段階的な破壊
- Outline:オブジェクトの周囲に色付きの輪郭を付ける
- Toon/Cel-shading:明暗の段階を付けたカートゥーン風の描画
- Hologram:走査線と透明度を使ったホログラム効果
- Force field:フレネル効果と交差判定を使ったエネルギーシールド
- Water surface:波と透明度を持つ水面
- Triplanar mapping:ワールド空間での UV 投影
- Vertex displacement:ノイズによる頂点の変形
- Custom:上記の手法を組み合わせる
各種エフェクトの詳細なレシピについては、references/shader-recipes.md を参照してください。
ステップ 2:レンダーパイプラインを検出する
プロジェクトの manifest.json ファイルに対して Grep を使用します:
Grep "com.unity.render-pipelines.universal" dans Packages/manifest.json → URP
Grep "com.unity.render-pipelines.high-definition" dans Packages/manifest.json → HDRP
Aucun match → Built-in Render Pipeline
コードを生成する前に、この検出を必ず行ってください。
ステップ 3:シェーダー形式を選択する
検出したパイプラインに応じて、references/shader-templates.md の該当するテンプレートを使用します:
| パイプライン | 形式 | 主なタグ |
|---|---|---|
| Built-in | ShaderLab + CG/HLSL | CGPROGRAM/ENDCG、surface shader |
| URP | ShaderLab + HLSL | "RenderPipeline"="UniversalPipeline"、CBUFFER_START(UnityPerMaterial) |
| HDRP | ShaderLab + HLSL(HDRP includes) | Shader Graph を推奨 |
URP での重要事項:SRP Batcher との互換性を確保するため、必ず CBUFFER_START(UnityPerMaterial) を含めてください。
ステップ 4:シェーダーを生成する
プロジェクト内に .shader ファイル全体を書き込みます:
- 配置場所:
Assets/Shaders/またはAssets/Art/Shaders/ - 命名規則:
Game_Category_EffectName.shader(例:Game_FX_Dissolve.shader) - 含めるもの:Properties、SubShader、Pass(es)、vertex/fragment、Fallback
ステップ 5:Material の設定手順
Material のセットアップ手順を必ず提示します:
- Unity で
Assets > Create > Materialを選択します - Material のドロップダウンでシェーダーを割り当てます(
Game/Category/EffectNameを検索) - 公開されている Properties(テクスチャ、色、しきい値)を設定します
- 対象の GameObject に Material を適用します
Render Graph API(Unity 6+)
Unity 6 では、URP と HDRP のバックエンドに Render Graph が使用されます。カスタムレンダーパスは RecordRenderGraph に移行する必要があります(従来の Execute は非推奨です)。
パターンと移行の詳細については、references/shader-templates.md#render-graph-api を参照してください。
URP の ShadowCaster Pass
オブジェクトが URP で影を落とすために必要な Pass です。テンプレートについては、references/shader-templates.md#shadowcaster-pass を参照してください。
厳格なルール
- 必ず コードを生成する前にレンダリングパイプラインを特定してください
- 必ず
Fallbackシェーダーを含めてください - 必ず 主要なパラメーターを Properties として公開してください(値をハードコードしないでください)
- 必ず シェーダーの後に Material の設定手順を記載してください
- 必ず ファイルを
Assets/Shaders/またはそのサブフォルダーに配置してください - 必ず
Game/Category/EffectNameのパターンでシェーダーに名前を付けてください - 必ず URP では
ShadowCasterパスを含めてください(専用セクションを参照) - 決して 同じシェーダー内で
CGPROGRAM/ENDCGとHLSLPROGRAM/ENDHLSLを混在させないでください - 決して URP/HDRP でサーフェスシェーダーを使用しないでください(頂点/フラグメントのみ)
- 決して URP で
CBUFFER_START(UnityPerMaterial)を忘れないでください(SRP Batcher に必要です) - モバイル向けのターゲットでは
half精度を優先してください - 技術に詳しくないアーティスト向けには Shader Graph を優先してください(ノード構成の説明を記載してください)
関連スキル
- シェーダーは迅速なプロトタイプ用ですか?シーンのセットアップには
/proto(Unity Rapid Proto)を使用してください - シェーダーの後にビルドを設定しますか?
/build-config(Unity Build & CI/CD Configurator)を使用してください - レンダリングのパフォーマンスを確認しますか?
/perf-audit(Unity Perf Audit)を使用してください
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| シェーダーがピンク/マゼンタになる | コンパイルエラーです。パイプラインのインクルード、関数名、セマンティクスを確認してください |
| SRP Batcher と互換性がない | すべての Properties を CBUFFER_START(UnityPerMaterial) / CBUFFER_END に含めてください |
| シェーダーが URP で動作しない | タグ "RenderPipeline"="UniversalPipeline" と "LightMode"="UniversalForward" を確認してください |
| 透明度が表示されない | Tags { "Queue"="Transparent" }、Blend SrcAlpha OneMinusSrcAlpha、ZWrite Off を追加してください |
| 影が表示されない | 適切なインクルードを含む ShadowCaster パスを追加してください(ShadowCaster セクションを参照) |
| モバイルでパフォーマンスが低い | テクスチャサンプル数を減らし、half に切り替え、動的な if を削除してください |
| テクスチャがぼやける/タイリングが正しくない | TRANSFORM_TEX(IN.uv, _MainTex) と、CBUFFER 内の _ST 変数を確認してください |
| 深度の交差が機能しない | _CameraDepthTexture が有効になっていることを確認してください(URP:パイプラインアセットで Depth Texture を有効にします) |
参考資料
- エフェクトの詳細なレシピについては、
references/shader-recipes.mdを参照してください - HLSL のユーティリティ関数とモバイル向け最適化については、
references/hlsl-utils.mdを参照してください