From 48a3eba7ca06502a53c6bf33cacca21921450be0 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Wed, 7 Feb 2024 23:03:48 +0800 Subject: [PATCH] vault backup: 2024-02-07 23:03:48 --- .../剖析虚幻渲染体系(04)- 延迟渲染管线.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 03-UnrealEngine/Rendering/RenderingPipeline/向往渲染系列文章阅读笔记/剖析虚幻渲染体系(04)- 延迟渲染管线.md diff --git a/03-UnrealEngine/Rendering/RenderingPipeline/向往渲染系列文章阅读笔记/剖析虚幻渲染体系(04)- 延迟渲染管线.md b/03-UnrealEngine/Rendering/RenderingPipeline/向往渲染系列文章阅读笔记/剖析虚幻渲染体系(04)- 延迟渲染管线.md new file mode 100644 index 0000000..813aaf1 --- /dev/null +++ b/03-UnrealEngine/Rendering/RenderingPipeline/向往渲染系列文章阅读笔记/剖析虚幻渲染体系(04)- 延迟渲染管线.md @@ -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)到LBuffer(Light 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内无用的光源,只保留有作用的光源列表,从而减少了实际光照计算中的无效光源的计算量。 \ No newline at end of file