Shader Graph类型选择
在Unity的Shader Graph中,不同的着色器类型(如Unlit、Decal、Lit)定义了材质如何与光照交互以及最终的渲染效果。
1. Unlit(无光照)
- 特点:完全忽略场景光照,只显示基础颜色或纹理。
- 适用场景:
- 特效(如粒子、发光UI)。
- 始终保持恒定颜色的物体(如HUD元素、纯贴图装饰)。
- 常见节点:仅需基础的
Texture2D
、Color
节点即可。
2. Decal(贴花)
- 特点:用于在其他物体表面"绘制"效果,通常是半透明的。
- 技术实现:
- 使用深度测试确保只渲染在其他物体的表面。
- 常结合模板缓冲区(Stencil)限制影响范围。
- 适用场景:
- 血迹、弹痕、涂鸦等表面效果。
- 动态投影(如阴影、光斑)。
- 注意事项:需正确设置Render Queue(渲染队列)为
Geometry+100
左右,确保在基础物体后渲染。
3. Lit(标准光照)
- 特点:完整计算光照、阴影、反射等物理效果。
- 基于物理渲染(PBR):
- 金属工作流:使用Metallic(金属度)和Smoothness(光滑度)控制表面特性。
- 镜面工作流:使用Specular(镜面反射)和Glossiness(光泽度)。
- 适用场景:
- 自然物体(石头、木材、皮肤)。
- 金属、玻璃等特殊材质。
- 常见节点:
PBR Metallic
或PBR Specular
节点。
4. Sprite Unlit(精灵无光照)
- 特点:
- 完全忽略光照,仅显示精灵的基础颜色/纹理。
- 支持顶点色(Vertex Color),可通过代码或动画动态控制颜色(如淡入淡出效果)。
- 适用场景:
- UI元素、HUD、2D游戏中的静态贴图。
- 需要顶点色动画的精灵(如血条、特效)。
- 与普通Unlit的区别:
- 专为精灵渲染优化,支持SpriteRenderer的特殊功能(如Sprite Atlas、顶点色)。
5. Sprite Lit(精灵光照)
- 特点:
- 支持基本光照计算(漫反射、高光),但比普通Lit更轻量。
- 可使用法线贴图模拟凹凸细节,但不支持复杂的PBR材质。
- 支持顶点色,可用于控制光照强度(如角色受击时边缘发光)。
- 适用场景:
- 2D游戏中需要光照效果的物体(如角色、动态环境)。
- 模拟简单的3D光照效果(如昼夜循环对精灵的影响)。
- 与普通Lit的区别:
- 简化的光照模型,性能开销更低。
- 不支持完整的PBR工作流(如金属度、粗糙度)。
6. Sprite Custom Lit(精灵自定义光照)
- 特点:
- 继承Sprite Lit的基本框架,但允许自定义光照算法。
- 通过Shader Graph或编写Shader代码实现独特的光照逻辑。
- 适用场景:
- 实现卡通渲染(Cel Shading)、轮廓光、渐变光照等特殊效果。
- 自定义光照衰减曲线或阴影算法。
- 自定义示例:
- 仅在精灵边缘计算高光,模拟卡通风格。
- 根据精灵朝向调整光照强度(如横版游戏中侧面光照更暗)。
选择建议
场景 | 选择 |
---|---|
不需要光照 | Unlit |
表面效果 | Decal |
真实物理材质 | Lit(PBR) |
UI、特效、纯贴图元素 | Sprite Unlit |
简单光照效果(如昼夜循环) | Sprite Lit |
复杂自定义光照(如卡通渲染) | Sprite Custom Lit |
需要完整PBR材质(如3D化精灵) | 普通Lit + MeshRenderer |