空城

来源:互联网 发布:有限元分析软件好学吗 编辑:程序博客网 时间:2024/04/27 14:58

        MMO游戏的主城是各种瓶颈的集散地,模型比别的区域要多出来很多,NPC也来凑热闹,有人的地方才有江湖,主城就是最大的江湖自然也就是玩家如春笋般孜孜不倦的一拨又一波,这对显卡带来非常致命的冲击,各种内存,显存吃紧,IO爆满,顿卡非常严重,如果是笔记本那真是惨不忍睹啊,换个固态硬盘笔记本马上回来个第二春,以前玩wow联想小Y显卡也不错,玩魔兽足够了,但是到了主城一转视角就卡几秒,后来果断加了个ssd,再也不会顿卡了。笔记本的硬盘速度实在太差,硬盘是最大的瓶颈,即便你CPU核再多,GPU再牛逼,IO就把你给搞死了。说了这么多不知所云。好吧,其实我是想说瓶颈,那么对于主城瓶颈在哪里呢?似乎没有什么东西可以减少啊,否则怎么对得起主城的称号呢。

        的确从数据上其实是可以做一些优化,LOD的确会对性能带来些许好处,但是毕竟有限,而且LOD会额外增加内存和显存,这可是个双刃剑,中低配内存显存吃紧的时候可是致命毒药。那么从技术上有什么手段可以使用呢,请不起章子怡我们可以找个替身啊,这就是正题:Impostor来了

       Impostor作为一个已经很成熟的技术在树的渲染力被大幅使用,SpeedTree的Billboard就是Impostor搞出来的,这些Billboard对应了一些Off-line生成的贴图,没张贴图包含了从不同角度树的拍照(Atlas),运行时根据树和camera dir的关系来决定采哪一个Atlas.这样远处的树就可以一起画面了,这对性能有极大的帮助。FarCry的RealTree采用的是类似的方法,不同的是Atlas是运行时拍的,这样不管怎么转摄像机,即便是丁石头也不会有问题,而对于SpeedTree这就是致命伤了。


        Impostor作为场景物件来优化性能在别的游戏里也有提及,最有名的就是City New York,最近研究Impostor的时候先找到这个文章彻底理解了一下,然后参考他的方法做出来了自己的Impostor。(奇怪的是我用GPA抓下来这个游戏发现里面的那个卡车居然没用Imposor,也许是侦测到我是牛逼显卡就不Impostor了...)这个方法其实是一个很传统的Impostor,的确可以起到不错的效果,我目前只对屏幕投影小于32的物件采用Impostor,因为物件太多,分配了一个2048x2048的RGBA8的buff,这样一共可以分配4096个Atlas,在能全看到主城的地方大概有3000个小物体可以满足Atlas的条件,这样子一下就可以画3000个物体,大大节省了CPU和GPU时间,将Impostor关掉不渲染,整个主城几乎成了"空城"...

        如果有足够的显存还可以更加暴力一些,这样可以节省更多的CPU和GPU时间,当然显存也是很宝贵的,所以也是需要权衡一下两者的得失来取一个皆大欢喜的值。

0 0
原创粉丝点击