空城
来源:互联网 发布:有限元分析软件好学吗 编辑:程序博客网 时间: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时间,当然显存也是很宝贵的,所以也是需要权衡一下两者的得失来取一个皆大欢喜的值。
- 空城。。。
- 空城
- 心似空城
- 空城旧梦,相逢不必邂逅
- 国庆黄金周,香港几近空城
- 你是我一触即碎的琉璃空城:伤感日志
- 你是我一触即碎的琉璃空城:伤感日志
- 你是我一触即碎的琉璃空城:伤感日志
- 你走后 爱情的遗址像是空城
- 4万亿计划后遗症:三四线城市土地出让过剩成空城
- 两个人聪明人的空城——《司马懿之虎啸龙吟》
- 黑马程序员 网络编程之网络通信三要素
- 只启动一个程序实例,如果已运行则调到前端
- Oracle 备份与还原
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- python 2.x 版本和3.x版本的 后台守护进程
- 空城
- Android Activity的四种LaunchMode!!!
- MFC下的各种字符串类型和相互转换
- 程序在内存中的分布
- TLB (Translation Lookaside Buffer)简介
- JNDI数据源配置
- Data Guard Service 相关介绍
- android 4.2 自定义PreferenceCategory PreferenceScreen Preference等
- Android设备管理器——DevicePolicyManager