Unity-LightProbe导致的性能异常问题
本文最后更新于 2026年7月8日 下午
使用LightProbe烘焙间接光时,主要是有一些LightProbe的点出现了穿插,导致在运行时计算插值时出现了大量的计算开销,从而导致性能异常。
解决方案是让Probe不要出现穿插,避免计算时因为两个点之间存在Mesh导致计算开销过大以及错误结果
问题现象
场景里启用 LightProbe 后,运行时会出现异常的 CPU 开销。
这个开销不一定稳定复现,有时候只在某些位置、某些镜头角度、某些角色移动路径上明显。
表面上看像是渲染压力,但实际问题可能出在 LightProbe 的插值计算上。
原因
LightProbe 本质上是用空间中的 Probe 点来近似间接光。
运行时物体需要根据当前位置,在周围的 Probe 之间做插值,得到当前点的光照信息。
如果 Probe 布点不合理,比如:
- Probe 点穿进了 Mesh
- Probe 点分布过密但没有必要
- Probe 点在墙体、地面、封闭空间附近交错
- 两个 Probe 之间被场景几何体隔开
就可能导致插值结果不稳定,甚至让运行时计算出现额外开销。
说白了,LightProbe 不是点越多越好,关键是点要放在合理的位置。
排查方式
可以按这个顺序看:
- 打开场景里的 LightProbe 可视化
- 检查 Probe 是否穿进墙、地面、模型内部
- 检查角色活动区域附近是否有异常密集的 Probe
- 对比删除问题区域 Probe 前后的 Profiler 数据
- 在问题位置附近移动角色,看开销是否跟位置相关
如果性能异常只在某一片区域出现,优先检查那片区域的 Probe 布局。
解决方案
- 移除穿插到 Mesh 内部的 Probe
- 让 Probe 尽量分布在角色真实可到达的空间
- 不要在封闭墙体两侧放出容易互相干扰的 Probe
- 对大面积平坦区域减少不必要的 Probe
- 修改后重新烘焙,并在目标设备上验证
有时候删掉几个位置错误的 Probe,比继续堆优化参数更有效。
注意点
LightProbe 主要解决动态物体接受间接光的问题。
如果场景中大量静态物体已经走 Lightmap,就没有必要为了它们继续铺很多 Probe。
Probe 的数量、位置和场景结构关系很大。特别是移动端项目,最好把 LightProbe 当成需要验收的资源,而不是烘焙后就不管。
Unity-LightProbe导致的性能异常问题
https://nicoier.github.io/2025/08/07/Unity-LightProbe导致的性能异常问题/