Unity 渲染管线

着色器规定了对象本身的外观(其材质属性)以及它对光照的反应方式。由于光照计算必须嵌入着色器,并且有多种可能的光照和阴影类型,因此编写“刚好有效”的质量着色器是一个很复杂的任务。为了使编写变得更加容易,Unity 3 引入了表面着色器,在该着色器上可以自动处理光照、阴影、光照贴图、正向光照以及延时光照对象。

本文档介绍了 Unity 光照及渲染管线的特点,以及表面着色器的工作原理。

渲染路径

您所使用的渲染路径决定了光照的应用方式以及着色器所使用的通道。着色器中的每个通道通过通道标记传送其光照类型。

延时光照路径

PrepassBase 通道渲染法线和高光指数;PrepassFinal 通道通过将纹理、光照与发光材质等属性相结合来渲染最终颜色。场景中所有正规光照都是在屏幕空间中单独进行的。有关详情,请参阅延时光照

正向渲染路径

ForwardBase 通道同时渲染环境、光照贴图、主方向灯以及不重要的(顶点/球谐函数)光源。ForwardAdd 通道用于任何额外的逐像素光源;对于每个被这种光照明的对象,该通道都会被调用一次。有关详情,请参阅正向渲染

如果使用了正向渲染,但着色器没有合适的正向通道(也就是说,没有 ForwardBaseForwardAdd 通道类型),则按在顶点光照 (Vertex Lit) 路径的渲染方式渲染该对象,参见下文。

顶点光照渲染路径

由于顶点光照最常用于不支持可编程着色器的平台,所以 Unity 不能在内部创建多种着色器排列来处理光照贴图与非光照贴图的情况。因此,要处理光照贴图和非光照贴图对象,就必须明确编写多条通道。

Page last updated: 2013-06-28