开场:
在开发赛博朋克风格的夜景或大型室内场景时,许多开发者都经历过这样的“翻车”现场:为了营造极致的氛围,在场景中放置了上百个点光源、霓虹灯和聚光灯。结果一运行,帧率瞬间暴跌至个位数,打开 GPU Profiler 一看,Draw Call 和 Overdraw 直接爆表,片元着色器里的光照计算耗时占据了绝对的统治地位。在前向渲染(Forward Rendering)管线中,多光源场景的渲染成本会随“物体数 × 灯光数”同步膨胀。面对这种多光源导致的性能灾难,现代 3D 引擎的终极解法之一便是延迟渲染(Deferred Rendering)。
一、前向渲染的复杂度困境:O(N×M) 到底是怎么来的
要理解延迟渲染为什么有效,先得看清前向渲染在多光源下到底贵在哪里。
经典的多通道前向渲染(如 Unity 内置管线)采用“Base Pass + Additional Pass”策略:第一个 Pass 渲染主光源,之后每增加一盏像素光,就要把受影响的物体再画一遍。这意味着:
设场景有 N 个物体、M
网硕互联帮助中心




评论前必须登录!
注册