(四)unity Shader之——————unity的渲染路径(前向渲染路径、延迟渲染路径、顶点照明渲染路径)

本文详细介绍了Unity中的三种渲染路径:前向渲染、顶点照明渲染和延迟渲染。前向渲染是最常用的方式,适用于大部分场景,而顶点照明渲染在性能最优但效果较差。延迟渲染解决了前向渲染在大量光源下的性能问题,但有特定的硬件需求。文中还详细阐述了每种渲染路径的工作原理、使用场景和对应的内置变量及函数。
摘要由CSDN通过智能技术生成

unity的渲染路径

在unity中,渲染路径决定了光照是如何应用到unity shader中的,如果要和光源打交道,我们需要为每个Pass指定它使用的渲染路径,只有为shader正确地选择和设置了需要的渲染路径,该shader的光照计算才能被正确的执行。

在unity5.0版本之前,主要有三种渲染路径:前向渲染路径、延迟渲染路径、顶点照明渲染路径。在unity5.0版本之后,unity做了很多修改和变化:顶点照明渲染路径被抛弃(但还被兼容),新的渲染路径代替了原来的延迟渲染路径。

一般情况下,一个项目只使用一种渲染路径,但有时我们希望可以使用多个渲染路径,例如摄像机A渲染的物体使用前向渲染,B使用延迟渲染,我们可以在每个摄像机的渲染路径设置中设置该摄像机的渲染路径。注意,如果当前显卡不支持所选择的渲染路径,unity会自动使用更低一级的渲染路径。例如一个GPU不支持延迟渲染,unity会使用前向渲染。

完成上面设置后,我们可以在每个Pass中使用标签来指定该Pass使用的渲染路径。通过设置LightMode标签实现的,不同的渲染路径可能包含多种标签的设置。

例如:

Pass{   Tags{ “LightMode”=“ForwardBase” }  }

下面是LightMode标签支持的渲染路径设置选项:

Always  //不管使用哪种渲染路径,该Pass总会被渲染,但是不会计算任何光照
ForwardBase //用于前向渲染,该Pass会计算环境光,最重要的的平行光,逐顶点/SH光源和Lightmaps
ForwardAdd  //用于前向渲染,该Pass会计算额外的逐像素光源,每个Pass对应一个光源
Deferred    //用于延迟渲染,该Pass会渲染G缓冲(G_buffer)
ShadowCaster    //把物体的深度信息渲染到阴影映射纹理或一张深度纹理中
PrepassBase //用于遗留延迟渲染,该Pass会渲染法线和高光反射的指数部分
PrepassFinal    //用于遗留延迟渲染,该Pass通过合并纹理、光照、自发光来渲染得到的最后的颜色
Vertex,VertexLMRGBM和VertexLM    //用于遗留的顶点照明渲染

指定渲染路径是我们和unity底层渲染引擎的一次重要沟通,如果为Pass设置了前向渲染路径标签,相当于告诉unity我准备前向渲染了,把那些光照属性按前向渲染的流程准备好,一会要用。随后通过unity提供的内置变量访问这些属性,如果没有指定任何渲染路径(实际上在unity5.X版本中如果使用了前向渲染又没有为pass指定任何前向渲染适合的标签,就会被当成一个顶点照明渲染路径等同的Pass,那么一些光照变量很可能不会被正确的赋值,我们计算的效果也有可能是错误的)

 一、前向渲染路径

这是最常用的渲染路径,我们首先概括前向渲染路径的原理,再给出unity对于前向渲染路径的实现细节和要求,最后给出unity shader中哪些内置变量是用于前向渲染路径的。

1.前向渲染路径的原理

每进行一次完整的前向渲染,我们需要渲染该对象的渲染图元,并计算两个缓冲区的信息(一个是颜色缓冲区,一个是深度缓冲区)。我们来用深度缓冲区绝对一个片元是否可见,如果可见就更新颜色缓冲区的颜色值。

如果没有通过深度测试,说明该片元是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值