开场
周五晚上十点,你往 Unity 场景里塞了 200 个点光源做夜景测试。Frame Debugger 一看——渲染线程直接红温,Draw Call 飙升到几千。这时候老司机路过瞄了一眼:Render Path 还停在 Forward?切 Deferred 啊。
你切过去,帧率从 22 飙到 78。但新问题也来了:显存多占了几十 MB,半透明物体渲染不对,MSAA 直接灰掉。这背后到底发生了什么?这篇文章把 Forward 为什么会炸、Deferred 怎么救场、以及它三个代价的真正成因,逐层讲透。
一、先看病灶:Forward 为什么在多光源下爆炸
要理解延迟渲染的价值,得先看清前向渲染(Forward Rendering)的成本结构。
Forward 是\”边画几何边算光\”:每个物体光栅化时,在片元着色器里对所有影响它的光源做光照计算。问题在于两件事:
所以 Forward 的死结是结构性的:光照开销跟着\”物体 × 灯\”走,而你真正需要的只是\”屏幕上每个像素的最终颜色\”


