本文面向全球离散格网系统中亿量级球面等积六边形单元的实时可视化瓶颈,提出一种基于片元着色器纹理映射的无几何实体渲染方法。该方法利用六边形格网与菱形格网的弱对偶关系,将大量六边形单元聚合为菱形瓦片,每个瓦片仅提交 4 个顶点,并在 GPU 片元阶段通过连续地理坐标到离散格网编码的解析映射完成单元归属判定与纹理采样。针对 WebGL 单精度浮点限制,论文进一步提出弱优化与强优化策略,使 18—19 级高分辨率格网仍能保持拓扑准确与交互渲染性能。
全球离散格网系统通过递归剖分地表空间形成多分辨率层次结构,是全球尺度地理分析、地球系统建模和数字孪生地球的重要空间框架。等积六边形格网具有采样均匀、面积一致和邻接各向同性等优势,但随着层级提升,传统将每个六边形拆分为三角形提交 GPU 的方法会导致顶点缓冲区、绘制指令和 CPU-GPU 传输压力急剧膨胀。
传统方案需要为每个六边形生成多个顶点并提交 GPU,当单元达到亿量级时,顶点数据和 Draw Calls 成为性能瓶颈。
WMTS 等矩形瓦片依赖连续纹理插值,难以直接表达离散、非矩形且形态存在差异的球面六边形单元。
WebGL 片元着色器主要使用单精度浮点,在 17—19 级高分辨率格网中容易出现纹理偏移和拓扑错位。
本文方法的关键思想是:不再将每个六边形作为几何实体绘制,而是在片元着色器中根据当前片元的地理位置,实时计算其所属六边形编码,再从纹理数组中获取对应属性颜色。这样,渲染复杂度从“随格网单元数量增长”转向“随屏幕片元数量增长”。
六边形格网与菱形格网具有弱对偶关系:菱形单元顶点对应六边形中心,六边形顶点对应菱形重心。研究将 n × n 个六边形单元聚合为一个菱形瓦片,以较低层级菱形格网作为瓦片边界,对更高层级六边形格网进行分块。
传统方法需要传输瓦片中所有六边形单元的顶点,而本文方法每个瓦片只提交 4 个顶点构成两个三角面。六边形形态与单元归属不再由几何顶点决定,而是在片元着色器内部动态解析。
首先利用 Leeuwen 等积投影将地理坐标转换为多面体菱形面上的全局仿射坐标;再通过取整、上下三角判定和候选中心搜索,确定片元附近的 3 个候选六边形中心;最后计算局部重心仿射坐标,判定所属离散格网编码。
片元所属格网编码确定后,着色器根据该编码访问纹理数组,读取六边形单元对应的属性色彩。该过程将离散格网属性数据以纹理形式传递给 GPU,避免海量几何实体生成。
由于六边形无法与菱形瓦片边界完全对齐,边界处可能出现半个六边形或渲染裂缝。本文通过瓦片额外扩展一行一列的策略进行镶嵌修补,保证全球范围内的连续渲染。
研究基于 Python 3.8、Cesium 1.132 和 WebGL 2.0 实现原型系统,并在高端笔记本、普通办公机、集成显卡设备和移动终端上测试。实验覆盖全球 7—12 级格网和青海湖区域 14—19 级高分辨率格网。
| 格网层级 | 参与渲染单元数 | 现有方法 FPS | 本文方法 FPS | 性能提升 |
|---|---|---|---|---|
| 第 9 级 | 约 786 万 | 18.9(条带法) | 88.6 | 约 4.7 倍 |
| 第 11 级 | 约 1.25 亿 | 19.0(点绘制) | 33.6 | 约 1.8 倍 |
本文提出的片元纹理映射方法将球面等积六边形格网渲染从几何驱动转向片元解析驱动,显著降低 CPU-GPU 传输压力和几何构建成本,并通过分级精度优化解决 WebGL 单精度浮点带来的高层级偏移问题。
每个菱形瓦片仅需提交 4 个顶点,格网属性通过纹理数组传递,显著降低顶点缓冲区和绘制指令压力。
方法基于 WebGL 2.0 和片元着色器实现,可在移动端、集成显卡和普通办公设备上获得可交互帧率。
通过弱优化和强优化策略,缓解单精度浮点误差,使 18—19 级高分辨率格网保持较高拓扑准确性。