多Pass渲染将渲染过程拆分为多个通道(Pass),每个Pass处理部分光照效果。单光源多Pass是指针对单个光源执行多次绘制(如基础颜色、高光、阴影等)。传统前向渲染中,每个光源都会导致场景被多次重绘,造成性能开销随光源数量线性增长。现代优化方案包括延迟渲染(先存储几何信息再统一计算光照)、光照合批和使用光照贴图等,以减少重绘次数。该技术虽能实现复杂光照效果,但需权衡性能与质量。
1. 多Pass渲染(Multi-Pass Rendering)简介
多Pass渲染是指为了实现复杂的光照效果,渲染管线会被拆分成多个渲染“通道”(Pass),每个Pass负责计算场景中的一部分光照或效果,最后将结果叠加合成最终画面。
2. 单光源多Pass渲染的含义
单光源:指场景中当前处理的光源只有一个。
多Pass:为了实现该光源的光照效果,渲染过程被拆分成多个Pass。
例如:
Pass 1:渲染场景的基础颜色(漫反射)。
Pass 2:计算该光源的高光(镜面反射)。
Pass 3:计算阴影或其他效果。
每个Pass都会对场景进行一次绘制(重绘),然后将结果叠加。
3. “每个光源都要重绘”的含义
当场景中有多个光源时,传统的多Pass渲染技术通常会对每个光源执行一遍完整的渲染Pass序列:
对光源1,执行多Pass渲染,绘制场景。
对光源2,执行多Pass渲染,绘制场景。
……
也就是说,每个光源都会导致场景被多次重绘。
4. 为什么会这样?
传统多Pass光照模型(如前向渲染 Forward Rendering)中,光照是累加的。
每个光源的光照贡献需要单独计算并叠加到最终颜色中。
因此,渲染管线会针对每个光源执行一遍渲染Pass,计算该光源对场景的影响。
5. 这种方式的缺点
性能开销大:场景被多次绘制,随着光源数量增加,渲染成本线性增长。
效率低:尤其在光源数量多时,帧率会明显下降。
6. 现代优化方案
延迟渲染(Deferred Rendering):先渲染场景的几何和材质信息(G-buffer),然后在光照Pass中对所有光源统一计算,避免多次重绘几何。
光照合批:将多个光源的光照计算合并,减少Pass数量。
使用光照贴图(Lightmaps):预计算静态光照,减少实时计算。
总结
| 术语 | 解释 |
|---|---|
| 多Pass渲染 | 渲染过程分多次绘制,每次绘制处理部分光照或效果 |
| 单光源多Pass | 针对一个光源执行多次绘制(多个Pass) |
| 每个光源都要重绘 | 场景会被每个光源多次绘制,光源越多绘制次数越多 |
| 性能影响 | 多次绘制导致性能开销大,影响帧率 |
版权声明:本文为CSDN博主「你一身傲骨怎能输」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33060405/article/details/149211350





