关于 Unity Shader Generator
Unity Shader Generator 是面向 Unity 项目的技能,可根据项目的渲染管线生成完整 ShaderLab/HLSL 着色器及材质设置说明。它涵盖常见视觉效果,并强调移动端优化与管线适配。
主要功能
- 01检测 Unity 渲染管线
- 02生成 ShaderLab/HLSL 着色器
- 03支持多种常见视觉效果
- 04提供材质配置说明
- 05面向移动端优化
适用场景
- 01为物体制作 dissolve 或描边效果
- 02创建全息、水面或力场着色器
- 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.mdshader-templates.mdshader-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)
快速开始
- 用户描述所需效果(例如:“带发光边缘的溶解着色器”)
- 技能检测项目的渲染管线
- 技能生成
.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-in | ShaderLab + CG/HLSL | CGPROGRAM/ENDCG、surface shader |
| URP | ShaderLab + HLSL | "RenderPipeline"="UniversalPipeline"、CBUFFER_START(UnityPerMaterial) |
| HDRP | ShaderLab + 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 设置说明:
- 在 Unity 中:
Assets > Create > Material - 在 Material 下拉菜单中指定着色器(搜索
Game/Category/EffectName) - 配置公开的 Properties(纹理、颜色、阈值)
- 将 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