渲染路径概述
一、定义
渲染路径(Rendering Path)是指在图形渲染过程中,图形引擎按照特定的步骤和顺序来处理场景中的几何、光照、材质等信息,最终生成屏幕上的图像的一种算法或策略。 它决定了图形引擎如何组织和执行渲染过程,以产生最终的视觉效果。 对于我们来说:在 Unity 中,渲染路径决定了光照如何应用到 Unity Shader 中,如果要在 UnityShader 中和光源打交道,我们需要为每个 Pass 渲染通道匹配对应的渲染路径,这样才能在 Shader 当中获取到正确的光源数据进行处理。
总而言之:渲染路径会影响光照处理,从而影响最终的渲染效果(光照阴影等)。存在多种不同的渲染路径
为什么会影响:简单理解,使用不同的渲染路径是,Unity 在 Shader 中准备的光源数据的数据是不同的,那么我们在 Shader 开发时,获取光源的方式是不同的
二、渲染路径的种类和设置
我们可以在 Camera 组件中的 Rendering Path(渲染路径)对其进行修改 在内置渲染管线中主要有三种渲染路径,分别是:
- Forward(向前渲染路径) 默认的渲染的方式,适用于相对简单的场景和较少的光源
- Deferred(延迟渲染路径) 可以处理较为复杂的场景,有大量光源时可以提供更好的性能
- Legacy Vertex Lit(顶点照明渲染路径) 较适用于简单的渲染方式 ,适用于性能受限的场景 已经基本不会使用
注意: 显卡不支持选定的渲染路径时,会自动选择一个精度较低的渲染路径
三、LightMode 标签 的作用
之前在编写 Shader 时都会使用 LightMode Path 标签 它的的主要作用就是来指明该 Pass 匹配的渲染路径是哪一种 只要匹配正确,我们便可以获取到正确的光源相关数据
注意: LightMode 标签通常于 Camera 中的 Rendering Path 匹配 用于指定 Pass 在渲染过程中的哪个阶段 如果过不匹配,可能导致渲染不争取
LightMode 的设置选项:
| 标签名 | 描述 |
|---|---|
| Always | 不管使用哪种渲染路径,该 Path 始终渲染,但是不会计算任何光照 |
| ForwardBase | 向前渲染标签的基础照明阶段执行的 Pass,该 Pass 会计算环境光,重要的平行光、顶点/SH 光源和 Lightmaps |
| ForwardAdd | 向前渲染路径的额外照明阶段执行的 Pass,该 Pass 会计算额外的逐像素光源,每个 Pass 对应一个光源 |
| Dederred | 延迟渲染路径中执行的 Pass,用于几何阶段之后执行的光照计算,该 Pass 会渲染 G 缓存(G-buffer) |
| MotionVectors | 用于生成运动矢量的 Pass,用于运动模糊 |
| Meta | 用于在渲染对象元数据时执行的 Pass |
| vertex、VertexMRGBM、VertexLM | 用于遗留的顶点照明渲染(几乎不使用了) |