`

Terrain(地形)

 
阅读更多

概述:对于地形来说,无非是对地形中每个顶点的有效管理,而UV的控制也是为了控制顶点的y坐标。

 

位置计算:

1.需要的参数:

(1).TILE_EDGE_VTX_NUM:Tile每行顶点数,边数 = 顶点数-1

(2).tileSize:Tile的宽度

(3).viPosition:Tile相对于整个地形的位置

(4).WORLD_SCALE:整个地形放大的倍数

其中1和4是固定参数,可以调节4对地形进行缩放。2和3需要在CPU端计算获取,2是每一个环的Tile宽度相等,不同环之间成2的倍数关系。

2.过程:

(1).渲染的时候,以每个Tile块为单位进行Instance渲染,在渲染前计算出viPosition作为每个Tile块相对于整个地形的位置。

(2).对每个顶点计算

第一步:通过顶点的索引计算出顶点相对于Tile的位置

第二步:然后乘tileSize以及加viPosition,这个时候的结果是此顶点相对整个地形的位置

第三步:顶点乘WORLD_SCALE,这个时候其实是对整个地形的放大,得到一个真实的地形。

 

纹理计算:

一共有四张纹理,两张高度图,两张地形贴图纹理

1.高度计算:

需要的参数:

pos:顶点计算时,第二步的产物,此时的地形还没有放大。

Coarse_HUV_Repeat_Interval:粗糙高度图UV坐标的跨度,这个是控制纹理覆盖的面积的。

Detail_HUV_Repeat_Interval:同理这是细节高度图UV坐标的跨度,一般来说这个跨度应该比粗糙的小。

Coarse_Height_Scale:这个是控制获取到的高度的比例的,与粗糙高度图匹配

Detail_Height_Scale:同上,与细节高度纹理匹配

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics