实际的游戏开发中,场景中的光源肯定是更多、更复杂的,如果只有一个平行光的处理,完全不能满足需求。处理更多的光源,我们就需要了解Unity底层是如何处理这些光源的。
1、渲染路径是什么
渲染路径(Rendering Path)是指在图形渲染过程中,图形引擎按照特定的步骤和顺序来处理场
景中的几何、光照、材质等信息,最终生成屏幕上的图像的一种算法或策略。
它决定了图形引擎如何组织和执行渲染过程,以产生最终的视觉效果。
对于我们来说:在Unity中,渲染路径决定了光照如何应用到Unity Shader中,如果要在Unity Shader中和光源打交道,我们需要为每个Pass渲染通道匹配对应的渲染路径,这样才能在Shader
当中获取到正确的光源数据进行处理。
总而言之:渲染路径会影响光照处理,从而影响最终的渲染效果(光照、阴影等)。存在多种不同的渲染路径
为什么会影响:我们可以简单理解,使用不同的渲染路径时,Unity在Shader中准备光源数据的流
程是不同的,那么我们在Shader开发时,获取光源数据的方式就会有所不同
2、渲染路径的种类和设置
我们可以在Camera组件中的Rendering Path(渲染路径)对其进行修改,在内置渲染管线中主要有3种渲染路径,分别是:
(1) Forward(前向渲染路径)
默认的标准的渲染方式,适用于相对简单的场景和较少的光源
(2) Deferred(延迟渲染路径)
可以处理较复杂的场景,有大量光源时可以提供更好的性能
(3) Legacy Vertex Lit((遗产)顶点照明渲染路径)
较适用于为简单的渲染方式,适用于性能受限的场景。基本已经不会使用
注意:当显卡不支持选定的渲染路径时会自动选择一个较低精度的渲染路径
比如不支持延迟渲染路径时,前向渲染路径会被采用
3、LightMode标签的作用
LightMode(光模式)标签它的主要作用就是来指明该 Pass 匹配的渲染路径是哪种,只要匹配正确,我们便可以获取到正确的光源相关数据
注意:
LightMode标签通常应该与Camera中的Rendering Path匹配。用于指定Pass在渲染过程中的哪个阶段,如果它们不匹配,可能导致渲染不正确
LightMode 标签支持的渲染路径设置选项有
在Shader开发中如果我们不进行LightMode渲染标签的设置。比如摄像机默认的是前向渲染路径,但是我们没有为Pass设置相关的标签,那么这个Pass会被当作一个顶点照明渲染路径的Pass。ForwardAdd,这时光源相关的数据就不会被正确的进行赋值,我们计算出来的结果就会出现错误,从而可能呈现出错误的渲染效果。
因此在进行Unity Shader开发时,我们需要对Pass渲染通道,进行正确的LightMode标签设置,从而匹配当前使用的渲染路径