什么是 Shader Graph?
Shader Graph 是 Unity 提供的可视化着色器编辑器,自 Unity 2018 起正式进入 Universal Render Pipeline(URP)。它允许开发者通过连线节点的方式创建着色器,而无需手写 HLSL 代码——但理解底层数学仍然至关重要。
理解 PBR 材质模型
基于物理渲染(Physically Based Rendering,PBR)的核心思想是用真实世界的物理参数来描述材质:
- Albedo(基础色) — 材质固有颜色,不含光照信息
- Metallic(金属度) — 0 表示非金属,1 表示金属
- Smoothness(光滑度) — 控制高光的集中程度
- Normal Map(法线贴图) — 在不增加多边形的前提下模拟表面细节
核心节点速查
掌握以下节点可以完成 80% 的常见效果:
// Sample Texture 2D — 采样贴图
Texture2D _MainTex → UV → RGBA
// Fresnel Effect — 边缘发光
Normal(World Space) + View Direction → Fresnel
// Time — 实现动态效果
Time.x (秒) / Time.y (秒/20)
// Lerp — 混合两个值
A, B, T → A*(1-T) + B*T
推荐工作流
从一个 Lit Shader Graph 开始,先连接 Albedo 和 Normal,确保基础 PBR 效果正确后,再逐步叠加自定义效果。过早引入复杂节点会让调试变得极其困难。
实战技巧
- 将常用节点组合打包为 Sub Graph(子图),提升复用性
- 使用 Custom Function Node 嵌入 HLSL 代码,突破节点限制
- 开启 Precision 为 Half,在移动端大幅提升性能
- Shader Graph 不支持 Tessellation,如需细分曲面仍需手写
