一种在H5环境下地形实例化渲染管理方案

1.背景技术

在使用H5环境下,绘制大量相同网格的预制件的地形时性能消耗是极大的,每一个单独的预制件都需要进行一次DrawCall,过多的绘制会导致执行效率下降,最终表现为帧率变低,运行的卡顿。

2.解决方案

以上遇到的核心问题就是大批量绘制拼接地形时导致的CPU到GPU的通信时间过长,游戏卡顿,为了解决这个问题。在利用WebGL的Instanced Arrays的基础上,通过对地形数据的分类分批处理管理,剥离视觉表现部分与物理模拟部分,使用实例化技术完成只调用一次渲染,绘制多个地形预制件。通过本方案,能够在大量拼接地形的场景下,提高渲染效率,减少性能消耗,支持在移动端上流畅运行.

为了解决以上问题,用以下解决方案包括:

1.拼接地形的数据编辑器。

2.地形数据渲染批次管理。

3.地形数据物理拆分。

4.地形数据的状态改变。

3.基本结构

image.png

4.具体实现

(1).数据编辑器

方案使用Unity引擎进行制作,使用面向设计的EmptyGo架构.提供了丰富的可编辑的地块功能.

image.png

image.png

导出数据形如:

image.png

(2).地形数据渲染批次管理

image.png

(3).地形数拆分

基于实体-组件思想的地形表现设计

image.png

5.性能对比

在30×30地形下

普通模式:

image.png

实例化渲染模式:

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享