vault backup: 2024-02-07 23:03:48

This commit is contained in:
BlueRose 2024-02-07 23:03:48 +08:00
parent aa9614e0ab
commit 48a3eba7ca

View File

@ -0,0 +1,25 @@
---
title: 剖析虚幻渲染体系04- 延迟渲染管线
date: 2024-02-07 22:29:32
excerpt:
tags:
rating: ⭐
---
# 前言
https://www.cnblogs.com/timlly/p/14732412.html
# 延迟渲染管线
由于最耗时的光照计算延迟到后处理阶段所以跟场景的物体数量解耦只跟Render Targe尺寸相关复杂度是O(Nlight×WRT×HRT)。所以,延迟渲染在应对复杂的场景和光源数量的场景比较得心应手,往往能得到非常好的性能提升。
但是也存在一些缺点如需多一个通道来绘制几何信息需要多渲染纹理MRT的支持更多的CPU和GPU显存占用更高的带宽要求有限的材质呈现类型难以使用MSAA等硬件抗锯齿存在画面较糊的情况等等。此外应对简单场景时可能反而得不到渲染性能方面的提升。延迟渲染可以针对不同的平台和API使用不同的优化改进技术从而产生了诸多变种。下面是其中部分变种
## Deferred Lighting(Light Pre-Pass)
又被称为Light Pre-Pass它和Deferred Shading的不同在于需要三个Pass
1. 第一个Pass叫Geometry Pass只输出每个像素光照计算所需的几何属性法线、深度到GBuffer中。
2. 第二个Pass叫Lighting Pass存储光源属性如Normal * LightDir、LightColor、Specular到LBufferLight Buffer光源缓冲区
3. 第三个Pass叫Secondary Geometry Pass获取GBuffer和LBuffer的数据重建每个像素计算光照所需的数据执行光照计算。
与Deferred Shading相比Deferred lighting的优势在于G-Buffer所需的尺寸急剧减少允许更多的材质类型呈现较好第支持MSAA等。劣势是需要绘制场景两次增加了Draw Call。
另外Deferred lighting还有个优化版本做法与上面所述略有不同具体参见文献[Light Pre-Pass](https://www.slideshare.net/cagetu/light-prepass)。
## Tiled-Based Deferred Rendering(TBDR)
**Tiled-Based Deferred Rendering**译名是基于瓦片的渲染,简称**TBDR**它的核心思想在于将渲染纹理分成规则的一个个四边形称为Tile然后利用四边形的包围盒剔除该Tile内无用的光源只保留有作用的光源列表从而减少了实际光照计算中的无效光源的计算量。