光照贴图有什么用?

What's the use of lightmap?

首先,我知道光照贴图是什么,使用它可以得到什么,以及如何实现它。我不明白的是,如果你有动态移动的物体,它们将无法生成光照贴图,你仍然需要一个光源来投射它们的阴影。那么,如果我们仍然需要为无法获得任何光照贴图的对象(即动态对象)提供光照,那么光照贴图会获得什么?

提前致谢。

如果你不使用实时阴影(这是一个选项,通常在移动设备上),那么你可以有或多或少的两种动态对象方法:

  • 使用烘焙到探测器中的光照贴图数据来近似逐顶点光照(无需实时光照)。这是一个近似值,但可以在某些情况下使用。
  • 仅在动态对象上使用实时灯光,因此您可以在不牺牲静态对象性能的情况下改善这些对象的外观,静态对象只能使用烘焙灯

如果您需要由动态对象投射到静态烘焙对象上的动态阴影,您仍然可以从光照贴图中获益,原因有以下几个:

  • 即使需要额外的光照通道来将阴影投射到静态光照贴图对象上,也可能并非所有对象都会受到阴影的影响,只有那些相对靠近动态阴影投射对象的对象才会受到影响。所以你仍然可以节省大量的 GPU 时间。
  • 光照贴图(尤其是在前向渲染路径上)允许产生复杂的光照场景,否则无法实时实现。动态物体,不需要受所有烘焙光的影响,但最终只受更重要的影响。通过这种方式,您可以为非常漂亮的静态环境提供有限数量的绘制调用,并且影响动态对象的 "important" 灯光数量有限

if you have dynamically moving objects, which won't be able to generate a lightmap, you still need a light source to project their shadows.

没错。但是:

  1. 您节省了静态光照贴图对象的计算着色,因为光不会影响它们
  2. 如前所述,投射阴影将投射到一组有限的对象上