科普:延迟渲染相关介绍

1、简介

这里的Rendering主要是对受光物体的渲染,这个渲染过程包括下面几步:

1) 计算几何多边形(也就是Mesh)。

2) 决定表面材质特性,例如法线、高光、自发光等等。

3) 根据光照和材质计算光照对表面的影响,并最终显示。

2、前向渲染和延迟渲染对比:

前向渲染存在的问题:

1)对于n个物体受m个光源的光照计算复杂度为O(m * n)。

2)计算光照时使用的光源数量受到shader寄存器数量的限制,通常限制为4个光源。

3)增加新的光照模型和新的光源类型,会使shader的个数翻倍。

延迟渲染的优势:

1)对于n个物体受m个光源的光照计算复杂度为O(m + n)。

2)没有光源数量的限制。

3)增加新的光照模型和新的光源类型,只会增加一种shader。

3、基本原理

延迟渲染:先将摄像机空间的点光栅化转化成屏幕坐标后再进行处理。这样就能减少处理的次数,从而提高效率,既然把处理流程放在了后面,那么处理所需要的参数也必须带到后面的流程。这里使用MRT(multi target render)就很重要,RT占用的显存越大,对显卡的的带宽要求也就越高。

延迟渲染管线可分为三个阶段:Geometry,Lighting,Shading。

1) Geometry阶段:将本帧所有的几何信息光栅化到G-buffer。包括位置,法线,贴图等。

2) Lighting阶段:以G-buffer作为输入(位置,法线)进行逐像素的光照计算,将diffuse lighting和specular lighting 结果分别保存在两张RT上作为lightbuffer。

3) Shading阶段:将G-buffer中的贴图buffer和lightbuffer融合,得到渲染结果。

如下图是前向渲染和延迟渲染的渲染流程:


来源: Fancy3D引擎

最新文章