版本: Unity 6 (6000.0)
语言 : 英语
内置渲染管线中的表面着色器输出结构
在内置渲染管线中创建表面着色器

内置渲染管线中的表面着色器和渲染路径

在内置 渲染管线一系列操作,将场景内容显示在屏幕上。 Unity 允许您从预构建的渲染管线中选择,或编写自己的渲染管线。 更多信息
参见 词汇表
中,当使用表面 着色器在 GPU 上运行的程序。 更多信息
参见 词汇表
时,照明应用方式和着色器使用的 通道 取决于使用的 渲染路径渲染管线用来渲染图形的技术。 选择不同的渲染路径会影响照明和着色计算方式。 某些渲染路径比其他渲染路径更适合不同的平台和硬件。 更多信息
参见 词汇表
。着色器中的每个通道通过 通道标签 传达其照明类型。

渲染管线兼容性

功能名称 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP 内置渲染管线
表面着色器

有关在 URP 中创建着色器对象的简化方法,请参见 着色器图


有关在 HDRP 中创建着色器对象的简化方法,请参见 着色器图

渲染路径

  • 正向渲染一种渲染路径,根据影响对象的光源,在一次或多次通道中渲染每个对象。 光源本身也根据其设置和强度,在正向渲染中以不同的方式进行处理。 更多信息
    参见 词汇表
    中,使用 ForwardBaseForwardAdd 通道。
  • 延迟着色内置渲染管线中的一种渲染路径,对可以影响游戏对象的灯光数量没有限制。 所有灯光都在每个像素上进行评估,这意味着它们都与法线贴图等正确交互。 此外,所有灯光都可以具有烘焙光影和阴影。 更多信息
    参见 词汇表
    中,使用 Deferred 通道。
  • 旧版顶点照明 中,使用 VertexVertexLMRGBMVertexLM 通道。
  • 在上述任何一种情况下,要渲染 阴影一种 UI 组件,为文本或图像等图形组件添加简单的轮廓效果。 它必须与图形组件位于同一个游戏对象上。 更多信息
    参见 词汇表
    或深度纹理,使用 ShadowCaster 通道。

正向渲染路径

ForwardBase 通道一次渲染环境光、光照贴图一种预渲染纹理,包含场景中静态对象的光源效果。 光照贴图叠加在场景几何图形上,以创建照明效果。 更多信息
参见 词汇表
、主方向光和不重要的(顶点/SH)灯光。 ForwardAdd 通道用于任何加性逐像素灯光;对受此类灯光照明的每个对象执行一次调用。 有关详细信息,请参见 正向渲染

如果使用正向渲染,但着色器没有适合正向的通道(即不存在 ForwardBaseForwardAdd 通道类型),则该对象将与顶点照明路径中的渲染方式相同,请参见下文。

延迟着色路径

Deferred 通道渲染照明所需的所有信息(在内置着色器中:漫射颜色、镜面反射颜色、平滑度、世界空间法线、自发光)。 它还将光照贴图、反射探针和环境光添加到自发光通道。 有关详细信息,请参见 延迟着色

旧版顶点照明渲染路径

由于顶点照明最常用于不支持可编程着色器的平台,因此 Unity 无法在内部创建多个着色器变体来处理光照贴图与非光照贴图的情况。 因此,为了处理光照贴图和非光照贴图对象,必须显式地编写多个通道。

  • Vertex 通道用于非光照贴图对象。 所有灯光都使用固定函数 OpenGL/Direct3D 照明模型 (Blinn-Phong) 一次渲染。
  • VertexLMRGBM 通道用于光照贴图对象,当光照贴图使用 RGBM 编码(PC 和主机)时。 不应用实时照明;通道应将纹理与光照贴图结合起来。
  • VertexLM 通道用于光照贴图对象,当光照贴图使用双 LDR 编码(移动平台)时。 不应用实时照明;通道应将纹理与光照贴图结合起来。
内置渲染管线中的表面着色器输出结构
在内置渲染管线中创建表面着色器