SLG视角超多重纹理混合地形(RVT进阶)
发布网友
发布时间:2024-09-17 10:19
我来回答
共1个回答
热心网友
时间:2024-11-04 02:10
先前进行了一项TopDown视角混合地形的初步研究。然而,实践中我们发现,当俯仰角度调整为40度,地形纹理的Tile增大时,精度出现了显著下降。回顾以往的解决方案,直接平铺存在两个主要问题:首先,大面积的浪费,因为TopDown视角下的地形是梯形,矩形的VT(Virtual Texture)存在大量未被利用的部分。虽然可以通过设置参数缓解部分问题,但总体利用率仍然低于70%。其次,平铺方式无法利用Mipmap(多级细节映射)技术,导致远处画面出现噪点和大量精度浪费。
基于此,我们决定在RVT(Real-time Virtual Texturing)技术上进行改进。RVT是从原始技术中引申出来的,在TopDown视角下的应用有所差异。在TopDown视角下,与传统RVT相比,我们关注的是表示范围的矩形(Rect)如何调整以适应视角的特殊性。
表示范围的调整主要涉及地图范围的平移和缩放。为了支持大世界的场景和跟随人物移动,表示范围的中心会根据相机位置动态变化。而传统的TopDown视角,地图范围的调整不仅包括平移,还包括缩放,中心点以相机的中心点与地形的交点为基准。相比于普通视角的平移,TopDown视角还支持地图范围的缩放,这意味着表示范围的大小(Size)会随相机缩放动态变化。
在Mip范围方面,传统RVT由于视角内地形投射到相机的角度差异较大,导致Mip等级跨度广泛,进而需要较大的PageTable(页表)以存储不同级别的纹理数据。然而,在TopDown视角下,由于地形相对平坦(山脉、河流等作为模型而非平面),Mip的范围可以显著缩小。经过测试,统一视角下,仅需4级Mip就足以覆盖大多数情况,这不仅减少了PageTable的大小,还便于计算和内存管理。动态调节当前表示的Mip级别,使较细的Mip等级能够减少内存使用,同时保持足够的清晰度。
Mip计算方面,传统RVT需要通过回读画面来确定每个地块需要的Mip等级,而TopDown视角允许在CPU上直接计算,根据地块与相机中心的距离设置Mip等级。这种计算方式还解决了反馈兼容性问题,提高了处理效率。
在Virtual Texture(VT)的处理上,传统RVT通过与PageTable一一对应索引地块,而TopDown视角下,由于PageTable和VT格子数量较小,可以更灵活地管理资源。VT格子数减少到8*8,每个地块的精度保持在512*512,同时仍使用LRU(Least Recently Used)策略控制缓存。
Lookup(查找表)的优化也遵循相似原则,通过调整查找表的大小和组织方式,使TopDown视角下的数据访问更加高效。在实现步骤中,我们需要确定MipOffset和表示范围的大小,根据相机高度确定当前MipOffset,然后遍历所有可能的格子,计算出需要渲染的VT列表。处理渲染列表时,使用PageTable来管理VT的绑定信息,并区分必须渲染和等待渲染的列表。最后,执行烘焙工作,更新Page和VT状态,并标记需要更新的lookup。通过优化查找过程,提高了渲染效率和画面质量。
在实际效果展示中,我们可以看到,通过优化后的TopDown视角混合地形技术,在不同分辨率的设备上,无论是4096*4096还是2048*2048,画面精度都能保持良好。性能测试显示,在小米6手机上,即使在4096分辨率下,也能实现满帧率的表现,而缩放操作时的帧率为45帧左右。