译:渲染管线概述

什么是渲染管线?

渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。

一个流水线是一序列可以并行和按照固定顺序进行的阶段。每个阶段都从它的前一阶段接收输入,然后把输出发给随后的阶段。

然后u3d的文档看上去像是只说了渲染路径,而渲染管线(渲染流水线)并没有怎么说明。

Unity 3D 用户文档 —— 渲染管线概述

渲染管线概述

着色器定义了对象本身的外观(其材质属性)以及它如何对光线做出反应。由于照明计算必须内置到着色器中,并且有许多可能的光影类型,因此编写“正常工作”的高质量着色器将是一项相关任务。为了使它更容易,Unity具有表面着色器,其中所有的照明,阴影,光照贴图,前进与延期渲染事情都会自动处理。

本文档描述了Unity照明和渲染管线的特性以及Surface Shaders幕后的情况。

4个渲染路径

如何应用照明以及使用哪些Pass,取决于使用哪个渲染路径。着色器中的每个通道都通过Pass标签传递其照明类型。

In Forward Rendering, ForwardBase and ForwardAdd passes are used.
In Deferred Shading, Deferred pass is used.
In legacy Deferred Lighting, PrepassBase and PrepassFinal passes are used.
In legacy Vertex Lit, Vertex, VertexLMRGBM and VertexLM passes are used.
In any of the above, to render Shadows or a depth texture, ShadowCaster pass is used.

(1)正向渲染路径 Forward Rendering path

ForwardBase pass 一次性渲染 ambient、lightmaps、主要的方向光、以及非重点的(vertex/SH)光照

ForwardAdd pass 被用于任何 additive per-pixel lights;每个被这样的光照亮的物体的一次调用就完成了

如果使用了正向渲染,但着色器没有 forward-suitable 的通道(即既不存在ForwardBase也不存在ForwardAdd通道类型),那么该对象就像在Vertex Lit路径中一样呈现。

(2)延迟渲染路径 Deferred Shading path

Deferred pass渲染所有光照所需的信息(在内置着色器中:漫反射颜色,镜面颜色,平滑度,世界空间法线,发射)。
它还将光照贴图,反射探针和环境照明添加到 emission chanel 中。

(3)Legacy Deferred Lighting path

PrepassBase pass 渲染 法线和镜面指数;

PrepassFinal pass 渲染 通过结合纹理、光照、自发光材质属性,来渲染最终颜色。

所有的在场景中的光照都在屏幕空间单独完成。

(4)Legacy Vertex Lit Rendering path

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

Vertex pass 被用于非光照贴图物体。所有的光照被一次性渲染,使用的是 fixed function OpenGL/Direct3D光照模型(Blinn-Phong)

VertexLMRGBM pass 被用于光照贴图物体(当光照贴图是 RGBM 编码(PC和主机))。没有实时光照被应用、pass通道被期待用于处理 纹理和光照贴图的结合。

VertexLMM pass 被用于光照贴图物体(当光照贴图是 double-LDR 编码(手机平台))。没有实时光照被应用、pass通道被期待用于处理 纹理和光照贴图的结合。

本文转自:CSDN - zts_coding,转载此文目的在于传递更多信息,版权归原作者所有。