日志文章

2006年07月20日 21:20:30

地形渲染相关

描述: LOD地形,PS1.4 BaseTex * 4 + AlphaMap + LightMap
图片:


描述: LOD地形,固定管线 BaseTex * 2 + AlphaMap + LightMap
图片:


地形网格:
   地形的网格可以使用高度图来生成,也可用不规则的Mesh来组成
(1)整块地形
   整个地形放在一个VB里,在CPU端做完VFC、LOD等等剔除三角形的工作后一次性提交到GPU,只需一次DIP调用,需要提前分配好足够的空间。
(2)分片地形
   将地形分成小块,块与块之间重复连接的边,每一个块一个VB,LOD时有一组IB,相同等级的VB共享相同的IB,先做VFC等剔除分片的工作后渲染显示的分片,需要多次DIP。

地形纹理:
(1)整张铺满
   整个地形用一张较大的纹理铺满,地表之间的过度可以预先渲染,也可以实时的用Alpha图混合几层纹理。同理,光照图和Alpha图也是一张铺满。这种方式的缺点是地表细节不高,大地形需要大纹理(一般至少要1024x1024以上)。
(2)分片纹理
   在分片地形中,每一个地形块分配几张纹理(地表纹理、光照图和Alpha图),分片之间可以共享一些相同的纹理。这种方式效果好,但是渲染时需要切换纹理(为了减少切换纹理次数,可以做预先的排序),纹理的数量也较多。
(3)整张铺满 + 细节纹理
   结合了上述两种方法,在细节处分配小纹理,整体用一张铺满。细节图与整图之间的过度只能实时混合,需要两层以上的纹理坐标。

地表过度:
(1)顶点过度
   使用顶点中的Alpha值来混合两层纹理,在使用LOD的时候会出现问题(除非根据Alpha值预先处理过三角形)。
(2)预渲染过度
   在载入地形的时候将过度纹理预先渲染好,使用时只需贴上一张纹理就行(使用分片地表时会增加纹理的数量)。
(3)Alpha图过度
   使用Alpha贴图混合几层纹理,如果Alpha贴图使用四个通道,那可以用来混合多层贴图(需要PS的支持)。如果使用分片地形,一个分片的范围很大,且在这个范围内需要有很多不同地表的过度,那就需要同时绑定两张以上的纹理,如果超过四种就需要另外添加Alpha贴图。

地表光照:
(1)顶点光照
   将预先计算好的光照加到顶点中,问题同顶点过度。
(2)光照贴图
   预先计算好的光照图在混合纹理的最后一层乘进去。

如果要进行动态载入,使用分片地形的方法较好,所有的纹理都要分片。

Tags: 渲染   地形  

类别: 图形图象 |  评论(2) |  浏览(2340) |  收藏
一共有 2 条评论
2楼 [楼主]我的游乐园 2007年10月14日 23:00:11 Says:
看具体情况了,地形太大了肯定是要分片
其他的操作只要实际使用中有效果那就用吧,不用拘泥与形式
1楼 [匿名]222 2007年10月13日 08:59:31 Says:
很不错的文章,这个问题困惑了我好久。
是不是现在大多数游戏都用的是分片纹理?有没有使用不同大小、旋转和缩放纹理的?
发表评论
看不清楚,换一张