在理解到当在我们的场景中有大量的光照图表时,这对预计算时间来说是有害的。我们能够从从预计算处理中完全地选择排除一些对象物体去极大地提高光照的表现性能。这将会减少光照图表的数量。来取而代之的是,我们可以在这些对象物体上使用探头光照(probe lighting),对于这些使用探头光照的物体从场景中接受间接光照来说,这是一种比较有效率的方式。尽管探头照亮的物体将不会对场景产生反射光照,但这往往是没有什么明显的影响的。对于适用于采用探头光照的对象物体往往是较小的物体,因为这些较小的物体对反射光的影响不大。
什么是探头光照(probe lighting)?
探头光照是在实时渲染应用中一种快速的近似光照技术。它通常被用于在游戏世界中的角色以及其他非静态(动态)对象物体的光照处理。探头光照在游戏运行时性能很好而它额外的好处是预计算会很快。
探头光照的原理,是通过在3D空间中一个指定的点来采样进来的光照信息,然后用球谐函数(spherical harmonics)的这种数学方法将采样的光照信息编码在一个球体上。这些系数占用很小的存储空间,在游戏运行时被快速地”解包"后,被shader所使用,去近似模拟场景中的表面光照。在Unity中这种功能由光照探头(Light Probes)所提供。
使用光照探头会有一些限制。一个这样的限制是,难以在不增加这些光照探头数量的情况下,在整个球面范围内表示高频或斑驳的光照。不幸的是,随着精度的提高性能开销也会迅速升高,这意味着出于性能原因,我们被限制在低阶球面谐波函数。
实际上,对于世界中的一个3D位置只有一个球形的光照表示,这使得探头光照不适合用于有大量变化的光照投射在大物体表面的情况。另一个限制就是当用球谐函数在一个球体上进行编码时,通常不擅于处理拥有特大平面的物体或是带有很深的凹洞的物体。如果想要将探头光照技术用于大型物体,可以参考Unity手册中提供的另一个光照探头代理体(Light Probe Proxy Volumes, LPPV)技术做进一步了解。
尽管有这些限制,探头光照技术还是很适用于和符合条件的小物体一起搭配使用,以较低的成本消耗发挥出卓越效果。 我们后续将深入探讨如何设置及摆放光照探头(Light Probes),现在我们只需要理解,通过选择在场景合适的地方使用探头光照,我们就能减少光照图表的数量。
选择用探头光照的对象物体
尽管通常我们为了进行光照计算,将在Env