毕业设计——地形使用GPU改良效果

    不知不觉都4月底了,4月有不少其他事耽搁了不少时间,现在进度还是慢了啊。。。55555。

    之前考虑到GeoMipMap地形需要渲染管理和加大尺寸,把上次的直接多次创建几个后效率就不行了,优化的不好啊。当时想用四叉树做场景管理的,但当时写时没注意有个严重的BUG,所以考虑直接采用四叉树LOD地形。

    这个在上上个星期弄好了,但效率还是太低了,因为作为三角伞形渲染DP调用次数太多了。考虑优化,但不知道为什么DIP绘制三角形列表总不对(索引没问题)。心情那个郁闷啊~~~,决定放弃。

    于是考虑采用《游戏编程精髓6》上的GPU地形,其实本不想使用shader的,感觉太复杂麻烦了,哎,没办法。

    《游戏编程精髓6》上的GPU地形,采用抗裂缝的方法是“群摆”,我采用的和我以前GeoMipMap地形解决裂缝方法一样“顶点移除”,所以与书上不同的需要16个索引缓冲,对应4个方向衔接。每个块还是17×17大小,而整个地图的分辨率为2049×2049。但有点不足的是相同细节级别的块之间链接也会被移除掉,这应该是更新四叉树更新后获取相邻信息不足造成的,现在只用了一个bool存储块是否细分,如果存储有具体细节级别就OK了。^_^

     我这个解决裂缝的方法需要知道邻接块的“细分”状态,在更新时采用广度优先方式只需一次,避免深度优先需要2次更新4叉树。

     现在把视锥体裁剪完成了,每个块的高度是其自身最大最小高度,而书上的是整个地图的最大最小,发下效果图。嘿嘿 ^_^

 

四叉树地形

被放弃的四叉树地形双色图效果,粉红色是最高细节,紫色是普通的。

 

四叉树地形网格

上面个图的网格

 

俯视剔除视点

GPU地形俯视剔除的视点效果。 

 

俯视剔除网格

上图的网格,可以看到块和块的链接处使用顶点移除。

 

俯视剔除其他

俯视剔除效果,其他视点观察效果,剔除不错,呵呵 

 

仰视剔除视点

仰视剔除效果,视点观察的效果。

 

仰视剔除网格

上图的网格

 

仰视剔除其他

仰视剔除效果,其他点观察效果

 

未做视锥体剔除

未做视锥体剔除效果的,看Culled就能区别出来了(Culled显示的是剔除多少个17×17的块),同时三角形明显增加,具体每帧渲染的三角数目需要乘以每帧时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值