天天看点

URP——着色器和材质Shaders and Materials

Shaders and Materials

通用渲染管线使用了一种不同于Unity内置渲染管线的着色方法。因此,内置的照明和自定义照明着色器不能与URP一起工作。相反,URP有一套新的标准着色器。URP为最常见的用例场景提供了以下着色器:

  • Complex Lit
  • Lit
  • Simple Lit
  • Baked Lit
  • Unlit
  • Particles Lit
  • Particles Simple Lit
  • Particles Unlit
  • SpeedTree
  • Autodesk Interactive
  • Autodesk Interactive Transparent
  • Autodesk Interactive Masked

升级建议:如果你升级你当前的项目到URP,你可以升级内置的着色器到新的。来自内置渲染管线的无光着色器仍然与URP一起工作。

对于SpeedTree着色器,当你重新导入它们时,Unity不会重新生成材质,除非你点击生成材质或应用&生成材质按钮。

注意:来自Unity内置的渲染管线的Unlit Shaders也可以在URP中工作。

Choosing a Shader

通过通用渲染管线,你可以通过物理基础着色器(PBS)和非物理基础渲染(PBR)获得实时照明。

对于PBS,使用Lit Shader(灯光着色器)。您可以在所有平台上使用它。着色器的质量取决于平台,但在所有平台上保持物理的渲染。这为您提供了跨硬件的逼真图形。Unity标准着色器和标准(高光设置)着色器都映射到URP中的Lit Shader(光照着色器)。有关着色器映射的列表,请参见着色器映射部分。

如果您的目标是功能较弱的设备,或者您的项目有较简单的阴影,使用Simple Lit shader,它是non-PBR。

如果你不需要实时照明,或者宁愿只使用烘焙照明和全局照明采样,选择Baked Lit Shader(烘焙照明着色器)。

如果你根本不需要在材质上照明,你可以选择无照明的着色器。

SRP Batcher compatibility

确保一个着色器是SRP批处理兼容:

  • 在一个名为UnityPerMaterial的CBUFFER中声明所有材质属性。
  • 在一个名为UnityPerDraw的CBUFFER中声明所有内置引擎属性,比如unity_ObjectToWorld或unity_WorldTransformParams。

有关SRP批处理程序的更多信息,请参见页面脚本渲染管道(SRP)批处理程序。