2.1 - 静态光源

2.1 - 静态光源

静态光源(Static Light) 是指在运行时不能以任何方式改变或移动的光源。它们仅在光照贴图中进行计算,一旦处理完成后,不会再有进一步的性能影响。可移动对象不能喝静态光源进行交互,所以静态光源的用处是非常有限的。

在三种不同的光源可移动性属性中,静态光源的质量中等、可变性最低、性能消耗也最少。

因为静态光源仅使用光照贴图,所以在游戏可玩之前它们的阴影就烘焙好了。这意味着它们不能给移动(动态)对象产生阴影,正如我们在示例中所看到的。但是,当照亮的对象也是静态的时,静态光源可以产生区域(接触)阴影。这是通过调整 光源半径 属性实现的。然而,应该注意的是,为了获得较好的阴影效果,接收柔和阴影的表面需要合理设置它们的光照贴图分辨率。

在静态网格物体组件上,光照贴图分辨率可以在静态网格物体资源上设置,或者通过勾选 Override Lightmap Res (覆盖光照贴图分辨率)勾选框并设置值。 更高的值意味着更高的分辨率,但也意味着更长的编译时间以及占用更多的内存。

在画刷表面,光照贴图分辨率通过 光照贴图分辨率 属性来设置。 这实际上是在设置密度,更低的值会产生更高的分辨率。

LightmapRes_4.png LightmapRes_16.png
Lightmap Resolution: 4.0 Lightmap Resolution: 16.0

由于 间接光照缓存示例网格物体 ,静态光照也可影响动态对象。这是光照示例的三维网格,它会被烘焙到场景中,并由渲染引擎来使用以决定静态光照在动态对象上会有何种效果。通过在编辑器右下方的控制台栏中输入以下命令,可以在视口中可视化地查看该网格:

r.Cache.DrawLightingSamples 1

您将会看到样本分散在整个场景中,如下所示:

IndirectLightingCache.png

为了让简介光照缓存样本存在,在场景中必须使用一个 Lightmass Importance Volume(Lightmass重要体积) 体积包围它,且必须使用Lightmass构建光照。

因为动态对象正在使用这个间接光照缓存,所以它们不知道该光源的实际位置,因此在示例中,我们没有看到动态对象上的阴影。

更深一层讲解,静态光源可以使用IES光照概述文件,关于这一点将会在 Example 3.1 中对此进行探讨,但是该概述文件中的数据将会烘焙到光照贴图中,这意味着它的质量要依赖于光照贴图分辨率。静态光源也不支持光照函数,关于这点我们会在Example 3.2 中进行探讨。