mcpField
U
Unity Shader Generator

Unity Shader Generator

github.com/juliankerignard创意与媒体850 次安装31 周前更新
代码仓库

关于 Unity Shader Generator

Unity Shader Generator 是面向 Unity 项目的技能,可根据项目的渲染管线生成完整 ShaderLab/HLSL 着色器及材质设置说明。它涵盖常见视觉效果,并强调移动端优化与管线适配。

主要功能

  1. 01检测 Unity 渲染管线
  2. 02生成 ShaderLab/HLSL 着色器
  3. 03支持多种常见视觉效果
  4. 04提供材质配置说明
  5. 05面向移动端优化

适用场景

  1. 01为物体制作 dissolve 或描边效果
  2. 02创建全息、水面或力场着色器
  3. 03按 URP 或 HDRP 配置着色器

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/unity-shader-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
hlsl-utils.md
shader-templates.md
shader-recipes.md

详细介绍

Unity 着色器生成器

此技能的功能

生成完整的 Unity 着色器(.shader 文件),并适配项目的渲染管线。涵盖常见效果:溶解、描边、卡通着色、全息效果、力场、水面、三平面映射、顶点位移。生成整洁、针对移动设备优化的 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)

快速开始

  1. 用户描述所需效果(例如:“带发光边缘的溶解着色器”)
  2. 技能检测项目的渲染管线
  3. 技能生成 .shader 文件和 Material 设置说明

分步指南

步骤 1:确定所需效果

分析用户请求,并将效果归类到已知配方中:

  • Dissolve:带阈值的渐进式销毁
  • Outline:物体周围的彩色轮廓
  • Toon/Cel-shading:带分段光照的卡通渲染
  • Hologram:带扫描线和透明效果的全息效果
  • Force field:带菲涅耳效果和交界效果的能量护盾
  • Water surface:带波浪和透明效果的水面
  • Triplanar mapping:在世界空间中进行 UV 投影
  • Vertex displacement:通过噪声变形顶点
  • Custom:组合上述技术

详细效果配方请参阅 references/shader-recipes.md。

步骤 2:检测渲染管线

使用 Grep 搜索项目的 manifest.json 文件:

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-inShaderLab + CG/HLSLCGPROGRAM/ENDCG、surface shader
URPShaderLab + HLSL"RenderPipeline"="UniversalPipeline"、CBUFFER_START(UnityPerMaterial)
HDRPShaderLab + HLSL(HDRP includes)优先使用 Shader Graph

重要提示(URP):始终包含 CBUFFER_START(UnityPerMaterial),以确保兼容 SRP Batcher。

步骤 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 设置说明:

  1. 在 Unity 中:Assets > Create > Material
  2. 在 Material 下拉菜单中指定着色器(搜索 Game/Category/EffectName)
  3. 配置公开的 Properties(纹理、颜色、阈值)
  4. 将 Material 应用到目标 GameObject

Render Graph API(Unity 6+)

Unity 6 使用 Render Graph 作为 URP 和 HDRP 的后端。自定义渲染 Pass 必须迁移到 RecordRenderGraph(旧版 Execute 已弃用)。

详细模式和迁移说明见 references/shader-templates.md#render-graph-api。

URP ShadowCaster Pass

让物体投射阴影所必需的 Pass。模板见 references/shader-templates.md#shadowcaster-pass。

严格规则

  • 始终在生成代码前检测渲染管线
  • 始终包含一个 Fallback 着色器
  • 始终将关键参数公开为属性(绝不使用硬编码值)
  • 始终在着色器后提供材质说明
  • 始终将文件放在 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 不兼容将所有属性放入 CBUFFER_START(UnityPerMaterial) / CBUFFER_END
着色器在 URP 中无法运行检查标签 "RenderPipeline"="UniversalPipeline" 和 "LightMode"="UniversalForward"
透明效果未显示添加 Tags { "Queue"="Transparent" }、Blend SrcAlpha OneMinusSrcAlpha、ZWrite Off
阴影缺失添加包含适当 include 的 ShadowCaster 通道(见 ShadowCaster 章节)
移动端性能低下减少纹理采样次数,改用 half,移除动态 if
纹理模糊 / 平铺不正确检查 TRANSFORM_TEX(IN.uv, _MainTex) 以及 CBUFFER 中的 _ST 变量
深度相交不起作用确保已启用 _CameraDepthTexture(URP:在管线资源中勾选 Depth Texture)

参考资料

  • 详细的效果配方见 references/shader-recipes.md
  • HLSL 实用函数和移动端优化见 references/hlsl-utils.md

评论

支持 Markdown