Unreal4 Lightmass 基础知识及间接光照缓存0039bate1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unreal4 Lightmass 基础知识及间接光照缓存0039bate1相关的知识,希望对你有一定的参考价值。

参考技术A

全局光照(Lightmass) 创建具有复杂光交互作用的光照图,例如区域阴影和漫反射。它用于预计算具有固定和静止运动性的光源的照明贡献部分。

用于动态对象全局光照和未构建场景预览的缓存间接光照样本。

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

从高层次的观点来看:
Lightmass在关卡中放置光照样本,并在光照构建中计算其间接光照。
当涉及到动态对象的渲染时间时,间接光照缓存 将确认此对象是否已拥有可用光照;如有,则进行使用。
如无光照可用(对象为全新、或移动量过大),间接光照缓存 将从预计算光照样本内插光照。

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

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

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

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

用于动态对象及预览未构建场景的全局光照的体积光照样本。

Lightmass会生成[表面光照贴图],用于表现静态对象上的间接光照。但是,动态的对象(例如角色)也需要一种接受间接光照的方法。这种方法就是在构建时将所有点的预计算光照存储在名为 体积光照贴图 的空间中,然后在运行时用于动态Object的间接光照的插值。

概括起来,体积光照贴图是按下列方式工作的:
Lightmass将光照样本放置在关卡中的各个位置,并在光照构建期间为它们计算间接光照。
当需要渲染动态Object时,就将体积光照贴图内插到着色的每个像素,提供预计算的间接光照。
如果没有构建的光照可用(也就是说Object是新的或者移动过多),就从 静态 Object的体积光照贴图将光照内插到每个像素,直至光照重构完成为止。

单击 显示(Show) > 可视化(Visualize) > 体积光照贴图(Volumetric Lightmap),使用 体积光照贴图 的视图模式在关卡视口中将光照样本可视化。

体积光照贴图使每个雾体素都有预计算光照内插到其在空间中的位置,从而支持了体积雾的静态光照应用。

在考虑体积光照贴图的性能和内存使用时,应该考虑下列因素。

第三人称视角角色上的体积光照贴图在PlayStation 4上会耗用0.02毫秒的GPU 时间。所有间接光照缓存渲染线程成本均已剔除。

如果你在大型关卡中降低 体积光照贴图细节单元格大小(Volumetric Lightmap Detail Cell Size) 来获得更高的精度,则还需要增大 体积光照贴图最大砖块内存量(Volumetric Lightmap Maximum Brick Memory Mb)。否则,细节单元格将会被剔除,导致动态Object间接光照精度下降。

关卡流送要求所有关卡(包括固定关卡和所有子关卡)都在同一时间构建,否则流送进来的关卡将无法正确注册。流送关卡主要是一种内存优化手段,细节最丰富的砖块体积会合并成一个尺寸更大的立方体体积(长宽高一样长、),而非盒型体积(长宽高不同)。细节最丰富的砖块会和距离最近的子关卡一起流送,而更高级别的关卡总是固定的。在那些包含实际几何体的关卡中,大部分数据都会进入那些细节最丰富的关卡砖块。假如关卡填满了几何体,那么体积中看起来是空的(或者"浪费的")空间就不应受到太多关注。当前系统使用单张体积纹理,这意味着我们对空的空间没有太多办法,因为我们不支持使用多张体积纹理,无法使用重叠和混合功能。

为了增加样本数量已经降低了 细节单元格大小(Detail Cell Size),但是在静态几何体附近的样本密度低于所请求的密度。

如果 砖块最大内存(Maximum Brick Memory) 过低,或者区域中的所有光照都几乎相等,细节砖块可能被剔除。

光线透过墙壁漏到角色身上,但没有漏到附近的静态网格体上。

当前解决漏光的唯一办法是降低 细节单元格大小(Detail Cell Size)(允许使用更多内存)或增加墙壁厚度。

以上是关于Unreal4 Lightmass 基础知识及间接光照缓存0039bate1的主要内容,如果未能解决你的问题,请参考以下文章

ue4太阳光下阴影有断点

Unreal4材质表达式实用表达式类节点讲解0015

ue4 lightmass研究

Unreal4 蓝图编辑器参考 0004bate1

Unreal4教程总结

承接Unreal4外包虚幻外包,北京正规公司