延迟渲染与传统多Pass渲染的核心区别在于处理几何与光照的方式。传统方法需为每个光源重复绘制全部几何(如1000个物体×10光源=10000次绘制),效率低下。延迟渲染则分两步:
几何Pass:仅一次绘制,将物体颜色、法线等基础信息存入G-buffer(几何缓冲区);
光照Pass:基于G-buffer统一计算所有光源效果,避免重复几何绘制。
优势在于光源增加仅影响光照计算(屏幕空间操作),几何绘制次数不变,尤其适合多光源场景。延迟渲染通过解耦几何与光照,显著提升性能。
<hr>
<font size="4" style="line-height: 45px;" color="#c200ff"><strong>延迟渲染的生动比喻:画画和上色</strong></font>
想象你是一个画家,要画一幅复杂的风景画,里面有很多物体(树、房子、人物),还有很多光源(太阳、灯光、火把等)。
<strong>传统多Pass渲染(Forward Rendering)就像这样:</strong>
你先画好树的轮廓和颜色,然后给它加上太阳光的阴影和高光。
接着你要给树加上灯光的光照效果,你得把树重新画一遍,再加上灯光的光照。
然后再给树加上火把的光照效果,又得重新画一遍树。
对场景中每个物体都这样重复,光源越多,画的次数越多,累不累?
<strong>延迟渲染(Deferred Rendering)则是:</strong>
第一步:先把所有物体的“基础信息”画在一张“信息图”上,比如:
颜色(漫反射颜色)
法线(表面朝向)
深度(距离摄像机的远近)
材质属性(粗糙度、金属度等)
这一步你只画一次,不管有多少光源。
第二步:根据这张“信息图”,统一计算所有光源对场景的光照,就像你拿着这张信息图,给它涂上不同光源的光影效果。
<hr>
<font size="4" style="line-height: 45px;" color="#c200ff"><strong>具体点说:</strong></font>
G-buffer(几何缓冲区):就是那张“信息图”,里面存储了场景中每个像素的基础数据。
光照Pass:用G-buffer里的数据,计算每个光源对每个像素的光照贡献,然后叠加起来。
<hr>
<font size="4" style="line-height: 45px;" color="#c200ff"><strong>为什么延迟渲染效率高?</strong></font>
你只画一次几何(物体形状和材质信息),不管光源多少。
光照计算是在屏幕空间(像素级别)进行的,不需要重新绘制物体。
光源越多,增加的是光照计算的次数,而不是重新绘制物体的次数。
<hr>
<font size="4" style="line-height: 45px;" color="#c200ff"><strong>举个简单的数字例子</strong></font>
假设场景有1000个物体,10个光源:
传统多Pass:每个光源都要绘制1000个物体,绘制次数 = 1000 × 10 = 10000次。
延迟渲染:绘制物体只做一次(1000次),光照计算做10次,但光照计算是在屏幕像素上,不是重新绘制物体,效率更高。
<hr>
<font size="4" style="line-height: 45px;" color="#c200ff"><strong>总结</strong></font>
<style type="text/css">
th{padding:5px;}
td{padding:5px;}
</style>
<table align="center" border="1" width="100%">
<tr><th>传统多Pass渲染</th><th>延迟渲染(Deferred Rendering)</th></tr>
<tr><td>每个光源都要重新绘制场景几何</td><td>场景几何只绘制一次,先存储基础信息
<tr><td>光照计算和几何绘制耦合</td><td>光照计算和几何绘制分开,光照在屏幕空间统一计算
<tr><td>光源多时性能下降明显</td><td>光源多时性能下降较缓,适合多光源场景</td></tr>
</table><br>
<hr>
<font color="#9a9a9a">版权声明:本文为CSDN博主「你一身傲骨怎能输」的原创文章,</font>
<font color="#9a9a9a">遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。</font>
<a href="https://blog.csdn.net/qq_33060405/article/details/145292219"><font color="#9a9a9a">原文链接:https://blog.csdn.net/qq_33060405/article/details/145292219</font></a>
<br>