【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 辅助节点生成。

核心概念与界面

工作区布局

  1. 主编辑区:节点画布,拖拽连接创建着色器逻辑
  2. 节点面板:左侧分类浏览(Input、UV、Math、Functions 等)
  3. 预览窗口:实时材质球/场景预览,支持多平台切换
  4. 属性面板:右侧参数编辑,支持 Blackboard(全局变量)
  5. 工具栏:保存、编译、模板选择、调试选项

节点系统

  • 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
  1. 基本 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 EditorUnity 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 技巧文章

学习路线

  1. 基础:PBR 材质搭建、UV 变换
  2. 中级:光照自定义、后处理效果
  3. 高级:Compute Shader 集成、跨管线优化
  4. 实战:溶解、水面、卡通渲染等 VFX

常见问题解决

问题解决方案
节点连接失败检查数据类型兼容(Float4 vs Float3)
材质变黑Master Node Target 设置错误,检查管线
编译错误更新 ASE 版本,检查 HLSL 语法
性能问题减少 Keywords,优化采样次数
URP/HDRP 不兼容选择正确 Master Node Template

ASE 是专业着色器开发的强大工具,通过节点与代码的完美结合,能实现 Unity 内置功能无法达到的效果。掌握后可大幅提升项目视觉质量和开发效率!

如需特定效果的节点搭建图解或代码示例,请提供更多细节!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注