着色器和材质
通用渲染管线 (Universal Render Pipeline) 使用与 Unity 内置渲染管线不同的着色方法。因此,内置和自定义的光照着色器不适用于 URP。相反,URP 有一组新的标准着色器。URP 为最常见的用例场景提供以下着色器:
- 复杂光照 (Complex Lit)
- 光照 (Lit)
- 简单光照 (Simple Lit)
- 烘焙光照 (Baked Lit)
- 无光照 (Unlit)
- 地形光照 (Terrain Lit)
- 粒子光照 (Particles Lit)
- 粒子简单光照 (Particles Simple Lit)
- 粒子无光照 (Particles Unlit)
- SpeedTree
- 贴花 (Decal)
- Autodesk 交互 (Autodesk Interactive)
- Autodesk 交互透明 (Autodesk Interactive Transparent)
- Autodesk 交互遮罩 (Autodesk Interactive Masked)
升级建议:如果将当前项目升级到 URP,可以将内置着色器升级到新的着色器。内置渲染管线中的无光照着色器仍可用于 URP。
对于 SpeedTree 着色器,重新导入这些着色器时,除非单击 Generate Materials 或 Apply & Generate Materials 按钮,否则 Unity 不会重新生成材质。
注意:Unity 内置渲染管线中的无光照着色器可用于 URP。
选择着色器
借助通用渲染管线,可以使用基于物理的着色器 (PBS) 和非基于物理的渲染 (PBR) 实现实时光照。
对于 PBS,请使用光照着色器。此着色器可用于所有平台。着色器质量会根据平台进行扩展,但会在所有平台上保持基于物理的渲染。因此可以提供跨硬件的逼真图形。Unity 标准着色器和标准(镜面反射设置)着色器都映射到 URP 中的光照着色器。如需了解着色器映射列表,请参阅着色器映射一节。
如果目标设备是性能较低的设备,或者项目具有更简单的着色,请使用非 PBR 的简单光照着色器。
如果不需要实时光照,或者只想使用烘焙光照和采样全局光照,请选择烘焙光照着色器。
如果材质上根本不需要光照,可以选择无光照着色器。
SRP Batcher 兼容性
要确保着色器与 SRP Batcher 兼容,请执行以下操作:
- 在一个名为
UnityPerMaterial
的 CBUFFER 中声明所有材质属性。 - 在一个名为
UnityPerDraw
的 CBUFFER 中声明所有内置引擎属性,如unity_ObjectToWorld
或unity_WorldTransformParams
。
有关 SRP Batcher 的更多信息,请参阅可编程渲染管线 SRP Batcher 页面。