引子:小明的"我只是多放了几盏灯,帧率怎么就’跳水’了"
小明在做一个夜晚的场景。为了营造氛围,他在场景里摆了一盏路灯,画面很美,帧率也稳。
他觉得不够,又加了一盏;再加一盏;接着是霓虹灯、车灯、招牌灯……越加越上瘾。
可就在灯光越来越多的时候,他一低头看帧率——傻眼了:
帧率像跳水一样,从流畅的 60 帧,"哗啦"一下掉到了卡顿的十几帧!手机也开始发烫。
小明百思不得其解:
"我明明没加新模型啊!场景里的物体数量一个没变,我只是多放了几盏灯而已!
灯,不就是照亮东西吗?它凭什么这么’吃’性能?
为什么’同一个物体’,被一盏灯照,很流畅;被五盏灯照,就卡成这样?
难道,一个物体被多盏灯照亮,引擎在背后……做了什么’重复的苦力活’?
这’灯光’和’性能’之间,到底藏着怎样的秘密?"
小明撞上的这个经典难题,答案就藏在渲染的一个核心概念里——前向渲染(Forward Rendering),以及 URP 用来优化它的**单通道(Single-Pass)**方案。
今天,我们就来彻底讲透:为什么灯多了会卡?而"单通道前向渲染",又是如何巧妙地缓解这个问题的。
一、先理解"前向渲染":一个物体,如何被"点亮"?
要搞懂性能