间接光照缓存

缓存的间接光照采样,用于模拟动态对象和未构建场景预览的全局光照效果。

Lightmass可以在静态对象上生成间接光照的光照贴图,但角色之类的动态对象同样需要一种接收间接光照的方法。这能通过 间接光照缓存(Indirect Lighting Cache) 来解决,其在光照构建时用Lightmass生成的采样来计算动态对象在运行时的间接光照。

下图显示了带与不带间接光照缓存渲染的效果差异:

![没有间接光照缓存的场景](01-indirect-cache-diffuse-no-indirect.png)

Elemental关卡中的漫反射光照,不带 间接光照缓存

![有间接光照缓存的场景](02-indirect-cache-diffuse-indirect.png)

采用了 间接光照缓存 的漫反射光照。

工作原理

从高层次的观点来看:

  • Lightmass在关卡中放置光照采样,并在光照构建中计算其间接光照。

  • 当涉及到动态对象的渲染时间时, 间接光照缓存 将确认此对象是否已拥有可用光照;如有,则进行使用。

  • 如无光照可用(对象为全新、或移动量过大), 间接光照缓存 将从预计算光照采样内插光照。

Lightmass将以高密度将光照采样放置在朝上的表面上,其余处则以低密度放置。采样将被限制在 LightmassImportanceVolume 中,其只放置在静态表面上。

![Lightmass生成的光照采样的可视化示例](03-indirect-cache-lighting-samples.png)

使用 展示(Show)->显示(Visualize)->体积光照采样(Volume Lighting Samples) 来显示Lightmass生成的光照采样。

此工作流的目的是尽量减少内容设置。但有时这种放置启发法会使漂浮在空中的区域缺少细节(例如玩家乘坐的升降电梯或飞行物)。可将 LightmassCharacterIndirectDetailVolumes 放置在这些区域的周围来获取更多细节。

运行时, 间接光照缓存 将把光照采样内插到每个可移动对象周围的位置。可移动对象即是"移动性"设为"可移动"的所有组件。

图中的螺绕环便是一个可移动静态网格体,显示了5x5x5的插值位置。

![可移动静态网格体和插值位置](04-indirect-cache-interpolation-points.png)

对象移动距离足以触发内插时才会进行内插,因此缓存会进行命名。注意:这些位置离对象的边界很远。以便对象在场景中移动时形成连续而稳定的光照。多数对象实际将获得3x3x3的插值分辨率。体积光照采样保存定向间接光照(其使法线贴图能正常工作)。

预览未构建的光照

间接光照缓存还能预览未构建光照的对象。它在较小的物体上效果极佳,但在较大的网格体上效果不佳(如建筑或地面)。移动已构建光照的静态网格体时,其将自动切换至间接光照缓存,直至下次光照构建。

此处有一根复制的柱子,其获得间接光照以便预览,而非完全隐藏在黑暗之中。

![预览用间接光照场景示例](05-indirect-cache-indirect-lighting-preview.png)

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消