【Unity】Amplify Shader Editor
引言
Amplify Shader Editor (ASE) 是 Unity Asset Store 上最受欢迎的节点式着色器编辑器插件,由 Amplify Creations 开发。它提供比 Unity Shader Graph 更强大的功能和灵活性,支持所有渲染管线(Built-in、URP、HDRP),适用于 Unity 2018.4+。ASE 通过可视化节点系统让开发者创建复杂着色器效果,无需深入 HLSL/CG 知识,同时支持代码级别的精细控制。
ASE 的优势在于跨管线兼容性、丰富的节点库(超过 500 个节点)和实时预览,特别适合 VFX 艺术家和需要自定义光照的开发者。最新版本(v2.3.5,2025 年更新)新增了 URP 12.x/HDRP 14.x 支持、Render Graph 兼容和 AI 辅助节点生成。
核心概念与界面
工作区布局
- 主编辑区:节点画布,拖拽连接创建着色器逻辑
- 节点面板:左侧分类浏览(Input、UV、Math、Functions 等)
- 预览窗口:实时材质球/场景预览,支持多平台切换
- 属性面板:右侧参数编辑,支持 Blackboard(全局变量)
- 工具栏:保存、编译、模板选择、调试选项
节点系统
- Master Node:输出节点,根据管线类型不同(PBR、Unlit、Post-Processing)
- Property Nodes:暴露到 Material Inspector 的参数
- Function Nodes:可重用代码块,支持 HLSL 导入
- Texture/Sampler:2D/3D/Cube 纹理采样,支持 LOD/Mip
- UV 节点:Tiling、Offset、World Position 等坐标变换
管线适配
// ASE 自动适配不同管线
Built-in: CGPROGRAM → Surface Shader
URP: HLSL → Universal Forward/Lit
HDRP: HLSL → HDRP/Lit
安装与基本设置
1. 导入与激活
- Asset Store:搜索 “Amplify Shader Editor”($65,常有 50% 折扣)
- 导入后:自动安装依赖,创建 ASE 菜单
- 首启动:选择渲染管线模板(推荐 Universal Pipeline)
2. 创建第一个着色器
// 方法1:右键 > Create > Amplify Shader > Universal > PBR
// 方法2:Assets > Create > Amplify Shader > Blank Shader
// 方法3:双击 .shader 文件自动打开 ASE
- 基本 PBR 着色器搭建:
Texture2D (Albedo) → Base Color (Master Node)
Constant (0.8) → Metallic
Constant (0.9) → Smoothness
Normal Map → Normal
3. 材质创建与应用
- 右键 Shader > Create > Material
- 拖拽材质到对象:实时预览更新
- Inspector 参数:自动同步 Property Nodes
核心节点详解
1. UV 与坐标系统
// 常用 UV 变换节点
UV → Tiling & Offset → World Position UV
↓
Triplanar (消除接缝) → Parallax (视差贴图)
Triplanar Mapping:自动投影纹理到三轴,避免 UV 接缝:
- 节点连接:World Normal → Triplanar Node → Sample Texture2D
- 优势:无需 UV 展开,适合地形/岩石
2. 数学与逻辑节点
- Lerp/Blend:纹理混合,基于阈值
- Step/Smoothstep:硬/软边缘裁剪
- Fresnel:边缘高光效果
- Noise:Perlin、Voronoi、Cellular 噪声
溶解效果示例:
Noise Texture → Step(Dissolve Amount) → Alpha Clip
↓
Edge Glow → Emission
3. 光照与阴影
- Light Direction:主光源方向
- Attenuation:光照衰减
- Shadow Coordinates:阴影采样
- Custom Lighting:替换 Unity 光照模型
卡通光照(Toon Shading):
NdotL → Step(0.5) → Multiply(Base Color) → Albedo
→ Rim Light → Emission
4. 高级功能节点
- Tessellation:几何细分(距离 LOD)
- Geometry Shader:顶点扩展/变形
- Compute Shader:GPU 计算集成
- Stencil:遮罩与多通道渲染
实用效果实现
1. 溶解与破坏效果
// 节点搭建
1. Property: _DissolveTexture, _DissolveAmount, _EdgeColor
2. Sample Noise → Add Time → Tiling → Step(_DissolveAmount)
3. Subtract(1, Step Result) → Multiply(_EdgeColor) → Emission
4. Step Result → Alpha → Master Node (Alpha Clip)
C# 动态控制:
public class DissolveEffect : MonoBehaviour
{
public Material dissolveMat;
public float dissolveProgress = 0f;
void Update()
{
dissolveProgress = Mathf.PingPong(Time.time, 1f);
dissolveMat.SetFloat("_DissolveAmount", dissolveProgress);
}
}
2. 水面波纹与折射
// 核心节点
1. Screen Position → Grab Screen Color (折射)
2. Sine(Wave Speed * Time) → Normal Map
3. Depth Texture → Foam (水深泡沫)
4. Fresnel → Reflection Intensity
3. 自定义后处理
创建 Post Processing Master Node:
// 全屏效果
Screen UV → Distortion Map → Offset → Sample Scene Color
↓
Color Grading → Final Output
性能优化与调试
1. Shader 变体管理
- Keywords:动态分支(#pragma multi_compile)
- LOD:细节级别控制,远距离简化
- Cull Mode:背面剔除优化
2. 调试工具
- Preview Modes:Lit、Base Color、UV、Normal 等
- Node Warnings:红色节点提示错误
- Frame Debugger:检查渲染顺序
- GPU Profiler:Shader 时间分析
3. 移动端优化
// 推荐设置
- 禁用 Tessellation/Geometry Shader
- 使用 Mobile-friendly Keywords
- 降低采样次数(_MainTex vs LOD)
- Alpha Test 而非 Alpha Blend
与 Unity Shader Graph 对比
特性 | Amplify Shader Editor | Unity Shader Graph |
---|---|---|
跨管线支持 | 全支持(Built-in/URP/HDRP) | URP/HDRP 专用 |
节点数量 | 500+ | 200+ |
代码集成 | 完整 HLSL/CG 支持 | 有限 Custom Function |
实时编译 | 更快,热重载 | 较慢 |
模板系统 | 丰富预设 | 基础模板 |
学习曲线 | 中等(节点+代码) | 简单(纯可视化) |
价格 | $65 | 免费(Unity Pro) |
社区资源 | 丰富(Wiki、Discord) | 官方文档 |
选择建议:
- 初学者:Shader Graph(免费,易上手)
- 专业 VFX:ASE(功能强大,跨平台)
- 混合使用:ASE 创建复杂效果,Graph 做简单材质
高级功能与扩展
1. Custom Functions
创建可重用函数节点:
// MyCustomFunction.hlsl
float CustomFresnel(float3 viewDir, float3 normal, float power)
{
return pow(1.0 - saturate(dot(normal, viewDir)), power);
}
在 ASE 中:Function Input → Call Function → Output
2. Sub Graphs 重用
封装常用效果(如噪声生成、边缘检测)为 Sub Graph,跨项目共享。
3. 集成第三方
- VFX Graph:材质输出到 ASE 节点
- Particle System:自定义粒子着色器
- Terrain:Splatmap 与 ASE 结合
资源与学习路径
官方资源
- 文档 Wiki:https://wiki.amplify.pt/ (完整节点参考)
- 视频教程:YouTube “Amplify Shader Editor Tutorials”
- 样本包:导入 180+ 示例着色器
- Discord:实时技术支持
中文社区
- Bilibili:搜索 “Amplify Shader Editor 教程”
- Unity China:论坛讨论与分享
- 知乎专栏:ASE 技巧文章
学习路线
- 基础:PBR 材质搭建、UV 变换
- 中级:光照自定义、后处理效果
- 高级:Compute Shader 集成、跨管线优化
- 实战:溶解、水面、卡通渲染等 VFX
常见问题解决
问题 | 解决方案 |
---|---|
节点连接失败 | 检查数据类型兼容(Float4 vs Float3) |
材质变黑 | Master Node Target 设置错误,检查管线 |
编译错误 | 更新 ASE 版本,检查 HLSL 语法 |
性能问题 | 减少 Keywords,优化采样次数 |
URP/HDRP 不兼容 | 选择正确 Master Node Template |
ASE 是专业着色器开发的强大工具,通过节点与代码的完美结合,能实现 Unity 内置功能无法达到的效果。掌握后可大幅提升项目视觉质量和开发效率!
如需特定效果的节点搭建图解或代码示例,请提供更多细节!