概述
延迟渲染路径对光照的数量没有任何限制,并且所有灯光都可以采用逐像素渲染;理论上来说,即使场景中有成百上千个实时灯光,依然可以保持较流畅的渲染帧率;
它支持法线纹理、阴影等效果的处理,但不能处理半透明物体,并且不支持真正的抗锯齿,这些会自动使用前向渲染路径;
延迟渲染的帧率不依赖于场景的复杂度,而是和使用的屏幕空间大小有关。这是因为延迟渲染路径中除了使用颜色缓冲和深度缓冲外,还会使用一个叫G-buffer的额外缓存区,它会存储我们关心的表面(通常是离摄像机最近的表面)的其他信息,比如表面的法线、位置、材质属性等等。总之我们需要的信息都存储到缓冲区中,而这些缓冲区可以理解为一张张的2D图片,我们实际上是在这些图像空间中进行处理的;
延迟渲染路径在哪里进行光照计算
延迟渲染路径中主要包含两个Pass
- 第一个Pass(对于每个物体,该Pass只会执行一次,通常无需我们自己实现)主要判断哪些片元可见,并且将可见片元的相关信息存储到G-buffer中,比如表面法线、视角方向、漫反射系数等数据;
- 第二个Pass利用G-buffer中各个片元的相关信息进行真正的相关计算,最终将颜色写入颜色缓冲区;