HLOD只能在开放世界关卡中使用,普通关卡无法使用HLOD
HLOD(Hierarchical Level of Detail)是LOD(Level of Detail)的一个扩展版本,旨在进一步优化性能。
HLOD和LOD的区别:
1.可以减少Batches和纹理数量
2.可以减少内存使用
3.可以提升CPU性能
4.不会增加磁盘空间占用
5.HLOD采用了更高级的技术,如BVH划分、模型贴图合并等,以达到更好的性能优化。
6.HLOD适用于大规模场景,如大城市、远处的建筑群等。
在UE5的官方文档中,有很多东西是不需要HLod的,只使用普通LOD即可
HLOD的类型:
实例化:适用于大场景中的草地植被,按照单元大小进行距离性的加载
合并网格体:适用于建筑群,按照距离将多个建筑合并成一个建筑
简化网格体:按照距离使用新的几何体代理远距离几何体
近似网格体:类似于Nanite的优化算法
HLOD的类型只是不同的优化类型
HLOD系统会生成低分辨率抽取静态网格体作为高分辨率集合体的占位符,然后将这些HLOD渲染为几何体的远程对象版本,以实现性能优化,在生成景观之前控制景观HLOD网格体的分辨率HLODS修改景观的所有LOD分布。
LOD 0画面大小的默认属性是0.5,这是用于创建景观HLOD的全分辨率景观网格,通常在HLOD构建过程中使用该画面大小的值,例如使用2.0,然后构建HLOD将景观属性恢复为正常默认值,不要尝试使用例如为1的值在大型世界中使用,因为屏幕尺寸为1的16321x16321大小的景观需要大约730GB的内存。在16321x16321大小的景观上使用2.0的值大约只需要50GB的内存。
不过就算你的计算机没有足够的RAM依然可以构建该大小的HLOD。如果在构建HLOd时遇到cpu使用频率下降并持续了很久,并且编辑器中无明显进度,那么说明它已经构建失败。需要你更改HLOD设置。
成功后你会发现,地形的现况会变成这个样子。并且远景虽然被卸载但是不会完全消失,它会被低多边形概括。HLOD系统对每个流送代理区域使用多边形剔除,这会减少每个区域的三角形数量,这可能导致HLOD剔除区域具有不同的分辨率区域,这取决于你的高度图的复杂性。但使用较大画面尺寸属性值的每个区域的不同分辨率通常会减少或删除不同的分辨率,因为它在每个区域中使用较低的HLOD分辨率。
为地形构建HLOD以优化地形
我在项目中使用的是4033x4033(2x2组件)大小的地图,使用了RVT以及VHFM进行优化。其中大概有4万左右的静态网格体在场景中。
其在Landscape中设置的LOD分布如下
在经历了多次构建HLOD失败后。我发现项目中创建地图中自己生成的实例HLOD层会应用在世界设置中,在构建地形HLOD时,会使用该实例HLOD进行地形的构建,但是不知为何由它作为父项生成的合并HLOD实例也会和构建地形HLOD一同进行构建,哪怕场景中并未使用该HLOD层并关闭了所有对象细节中在HLOD中包含Actor。解决方法是取消合并HLOD层的所有引用,包括取消实例HLOD中的设置合并HLOD层的父项
这样我们在构建地形HLOD时就只会构建地形的实例化HLOd层了,大大减少了构建HLOD时出现的各种问题。
部分资料引用:
评论区