论文摘要
本文主要研究如何在三维实时系统中对大规模室外地形做高效渲染。在20世纪末,限于当时的硬件水平,对地形的优化主要依靠CPU计算。经典的ROAM、四叉树等算法使用递归划分或合并,试图用最合适的三角形数目对几何地形进行模拟。同一时期提出的TINs地形优化算法使用不规则三角形对地形做更精确的模拟,但由于存储结构复杂,CPU计算量大等缺点导致其不适合应用于实时系统。这些算法的共同点在于都使用大量CPU计算来减少送入管线的三角形总数。GPU处理三角形的能力日益强大,如果保持渲染状态不变,GPU可以进行每秒上亿次三角形绘制。GeomMipmapping是基于GPU进行地形加速渲染的经典方法之一,其主要管理对象是规则网格地形块。网格的顶点和索引数据都存储于显存,GPU可以快速读取它们以进行高效绘制。位于视域体外的地形块可以按照四叉树快速剔除,与视域体相交的地形块也可以根据摄像机位置选择合适的LOD。GeomMipmapping的主要性能瓶颈在于每帧对VB、IB的一次CPU更新。几何Clipmaps以视点为中心将不同分辨率网格嵌套在一起,LOD表现为离摄像机较近网格具有更高细节。我们在系统实现中对传统几何Clipmaps做出改进,创建了不改变的VB、IB并组织成能被GPU快速渲染的strip。利用几何对称性可以实施几乎无CPU消耗的区域裁剪。高度数据被存于纹理在VS阶段采样。结合双线程分页机制,几何Clipmaps可以支持大规模地形数据,但同时带来每帧对高度纹理的CPU更新,我们仅使用一次map操作并结合toroidal数组完成所有高度值的更新,以降低性能损失。为避免T型裂缝,需要对顶点进行morphing计算,整个morphing过程在shader里完成。将我们实现的几何Clipmaps系统模块与GeomMipmapping程序做性能对比,结果证明前者在效率上更具优越性。利用现代显卡的高速绘制能力,几何Clipmaps将CPU从过去繁重的计算中解放出来,使其更能专注于实时系统中的人工智能、物理系统、或者其它真实感渲染技术。因此,它能更好的运用于项目组的三维实时展示系统中,使高数据量地形渲染不会成为系统的主要性能瓶颈,可以为其它真实感绘制,比如水面,动态天空等提供更好的实现条件。