在基于物理渲染(PBR)的 Standard Shader 推出之前,Unity 提供了八十余种内置旧版着色器,用于满足不同渲染需求。这些着色器目前仍保留以确保向后兼容性,但建议新项目优先使用 Standard Shader 或 URP/HDRP 着色器。以下是旧版着色器的使用说明与分类解析:
一、旧版着色器的适用场景
- 兼容性项目:
- 维护旧项目时沿用原有着色器,避免材质显示异常。
- 性能受限场景:
- 移动端或低端设备,部分旧版着色器计算简单(如 Unlit 系列),性能优于 PBR 着色器。
- 风格化渲染:
- 实现非物理效果(如卡通着色、发光轮廓),部分旧版着色器提供直接控制高光颜色等功能。
二、旧版着色器分类与特性
旧版着色器按功能分为以下几类,括号内为典型用途:
1. 基础着色器(Basic Shaders)
- Diffuse(漫反射):
- 仅计算漫反射,无高光,适合纯色或纹理贴图(如墙壁、地板)。
- VertexLit(顶点光照):
- 光照仅计算于顶点,适合低多边形模型(如早期手游角色)。
- Object-space Normal Map(对象空间法线贴图):
- 使用对象空间法线贴图,旋转模型时法线方向不变(与 Standard Shader 的切线空间法线不同)。
2. 高光着色器(Specular Shaders)
- Blinn-Phong:
- 经典高光模型,支持高光颜色与强度调整(如塑料、金属高光)。
- Phone:
- 高光更锐利,适合光滑材质(如玻璃、车漆)。
- Specular:
- 分离漫反射与高光颜色,高光颜色可自定义(如彩色高光的魔法材质)。
3. 透明着色器(Transparent Shaders)
- Transparent/Diffuse:
- 透明漫反射,支持 Alpha 通道(如玻璃、树叶)。
- Transparent/Specular:
- 透明材质带高光(如半透明塑料、果冻效果)。
- Transparent/Cutout:
- 硬边透明(如栅栏、带孔洞的布料),通过 Alpha 阈值裁剪。
4. 自发光着色器(Emissive Shaders)
- Emissive/Diffuse:
- 自发光漫反射材质(如发光矿石、夜景中的霓虹灯)。
- Emissive/Specular:
- 自发光且带高光(如科幻飞船的发光面板)。
5. 地形与植被着色器(Terrain & Vegetation Shaders)
- Tree Billboards:
- 公告牌树木,面向相机渲染(如远距离植被)。
- Terrain Diffuse/Specular:
- 地形专用着色器,支持多层混合(如草地、泥土的无缝拼接)。
6. 特殊效果着色器(Special Effects Shaders)
- Reflective/Reflective Bumped:
- 使用立方体贴图模拟反射(如镜子、水面),但不支持实时反射。
- Parallax Normal Map:
- 视差映射实现伪 3D 深度(如岩石表面的凹陷)。
- Anisotropic:
- 各向异性着色,模拟毛发、拉丝金属的方向高光(如头发、CD 光盘)。
三、旧版着色器与 Standard Shader 的对比
特性 | 旧版着色器 | Standard Shader(PBR) |
---|---|---|
光照模型 | 基于经验公式(如 Blinn-Phong) | 物理基于渲染(PBR),符合真实世界规律 |
参数控制 | 分散(如高光颜色、漫反射颜色独立调整) | 统一工作流(金属度 / 粗糙度控制反射) |
性能 | 部分简单着色器性能更高(如 VertexLit) | 计算更复杂,但优化后效率更均衡 |
真实感 | 依赖美术经验调参 | 自动模拟物理反射,真实感更强 |
多平台支持 | 传统管线,适合低端设备 | 支持 URP/HDRP,适配现代渲染管线 |
四、迁移建议与最佳实践
-
新项目避坑指南:
- 除非必要,避免使用旧版着色器,优先采用 Standard Shader 或 Scriptable Render Pipeline(URP/HDRP)。
- 若需兼容旧项目,可逐步将关键材质迁移至 PBR 工作流,提升画面质量。
-
旧版着色器优化技巧:
- 减少过度绘制:透明着色器(如 Transparent/Specular)需注意排序,避免大量半透明物体重叠。
- 合并材质:使用相同旧版着色器的物体可静态合并,减少 Draw Call。
- 限制特效复杂度:反射、视差映射等旧版特效性能开销高,尽量用粒子系统或后处理替代。
-
风格化效果实现:
- 利用旧版着色器的灵活性快速实现创意效果:
- 卡通着色:使用 Diffuse 着色器 + 自定义高光颜色,配合边缘描边(Edge Detection)。
- 发光轮廓:通过 Emissive/Diffuse 叠加 Color Dodge 混合模式。
- 利用旧版着色器的灵活性快速实现创意效果:
五、常见问题与替代方案
- Q:旧版着色器不支持实时阴影?
- A:多数旧版着色器不支持阴影投射,可改用 Standard Shader 或手动添加阴影投射层(Shadow Caster)。
- Q:透明材质锯齿明显?
- A:旧版透明着色器缺乏抗锯齿优化,建议使用 Standard Shader 的透明模式并开启 MSAA。
- Q:如何模拟 PBR 的金属效果?
- A:旧版着色器需手动调整 Specular Color 为金属色(如银灰色),并提高光泽度(Glossiness),但真实感有限。
总结
旧版着色器是 Unity 历史发展的产物,在兼容性和特定场景下仍有一定用途,但在现代项目中逐渐被基于物理渲染的着色器取代。建议开发者优先学习 Standard Shader 和 URP/HDRP 管线,仅在必要时使用旧版着色器,并逐步将项目迁移至更先进的渲染流程,以确保画面质量与性能的平衡。