在Unity的Shader Graph中,不同的着色器类型(如Unlit、Decal、Lit)定义了材质如何与光照交互以及最终的渲染效果。

1. Unlit(无光照)

  • 特点:完全忽略场景光照,只显示基础颜色或纹理。
  • 适用场景
    • 特效(如粒子、发光UI)。
    • 始终保持恒定颜色的物体(如HUD元素、纯贴图装饰)。
  • 常见节点:仅需基础的Texture2DColor节点即可。

2. Decal(贴花)

  • 特点:用于在其他物体表面"绘制"效果,通常是半透明的。
  • 技术实现
    • 使用深度测试确保只渲染在其他物体的表面。
    • 常结合模板缓冲区(Stencil)限制影响范围。
  • 适用场景
    • 血迹、弹痕、涂鸦等表面效果。
    • 动态投影(如阴影、光斑)。
  • 注意事项:需正确设置Render Queue(渲染队列)为Geometry+100左右,确保在基础物体后渲染。

3. Lit(标准光照)

  • 特点:完整计算光照、阴影、反射等物理效果。
  • 基于物理渲染(PBR)
    • 金属工作流:使用Metallic(金属度)和Smoothness(光滑度)控制表面特性。
    • 镜面工作流:使用Specular(镜面反射)和Glossiness(光泽度)。
  • 适用场景
    • 自然物体(石头、木材、皮肤)。
    • 金属、玻璃等特殊材质。
  • 常见节点PBR MetallicPBR 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