- 类型:角色扮演
- 发行:北京网元圣唐球探足球比分科技有限公司
- 发售:2013年8月18日
- 开发:上海烛龙信息科技有限公司
- 语言:简中
- 平台:PC
- 标签:国产
球探足球比分 卡顿原因科学分析 技术宅带你剖析优化
- 来源:阿泽
- 作者:售梦者
- 编辑:售梦者
接下来,简单分析一下大家都比较关心的优化问题,即“会导致‘卡’的一部分原因”。
渣优化什么的,真的不想喷了。随便一个简单的场景就近千drawcall,完全没有节制。总之就是各种浪费!次数多也就算了,很多物体还都是各种地面:
是地面也就算了。你说你就一平面!还是基本看不见的!你妹的!有必要用6144个顶点2048个面?????
当前帧绘制的第一个物体:
这是天空球……作为背景它的精度逆天了……
于是我决定必须要分析一下模型。
果然,天空(包括云层)就用了近2W面,略显奢侈了,你这个画面效果根本用不着如此浪费吖!
喔。我终于弄懂安全裤的发型了:
原来真的很像深海电鳐……
另外,我证实了安全裤是有胸的!虽然形状有点奇特,但确实完整带沟!
Good!
模型的质量没有太大的问题,但有些地方不是很均匀,比如无射的呆毛稍微有点费了。
可是脖子却太省了点,转起来很别扭。
(嗯,喉结不会动,这孩子肯定没看过张学友唱歌~)
建筑方面也还不错(虽然只可远观(因为面数不多))
重点来了。
首先,LOD和视锥体裁剪肯定是有的,但!请看:
还是之前的问题——你妹啊!这地形就是一平面啊!你用将近四万面渲染了40多个平面啊!
真的,除了河道低一点之外,其它地方都是平的啊!我勒个去啊!
如果你这是起伏不平的山地我就不说了。我勒个去啊!
更要命的是,没有任何occlusion culling——
图中红色箭头是我当前所在位置和面对的方向。可见,大多数渲染出来的对象我是看不到的。
比如这个大皮鞋,绝对是被建筑挡住、肯定在我的视线之外,但还是照样无差别的被渲染出来了:
而且前面提到的LOD只限于地形,也就是说这里的LOD根本没有任何作用、没有任何意义……只能说“没有LOD的话会更卡”而不能说“LOD可以提高效率”!
此时的大皮鞋还是被盖住的状态,但!这个目前根本看不到的、就算看到也是被盖住的模型——
它里面仍然是完整的!
我勒个去!后来的剧情里,就算我走到它跟前了,也看不到它的真容!——看不到的东西就不要了嘛!不要了嘛!这玩意也是两万多面的模型啊!
类似的情况还有一些。比如大皮鞋附近的一个小摊,也是根本看不到的东西,也有16000多面的消耗:
再比如这些我看不到的树,又是近15000面的浪费啊:
而且数量还这么多……
Occlusion Culling不好做,我理解,但至少也应该手动配一下,或者用四叉树滤一下吧……基本的优化还是有必要花点时间的。
总而言之,这一帧上千次DrawCall(可理解为对显卡的消耗),其中至少2/3是渲染被遮挡的、看不到的物体,另外1/3中还包含有“超精细”的废物地面网格。F**k!你们就这么喜欢让显卡做无用功!?
对了,我说过:如果用同样的方法渲染10000个面,那么“渲染十个1000面的模型”会比“只渲染一个10000面的模型”更慢。
然后,你看这些草,虽然只有2000多面,但竟有20多个物体:
这种情况下,应该是物体越少越高效。
水边的墙也是一样,你又没裁掉,没必要分那么细吧:
着色方面。
先上一张SSAO的Pass:
效果是有的,不知为什么到了最终画面中就不太明显。
可能是最后合成做疵了。而且,貌似头发没有?哪路或多。X!这发型是最需要AO的,对吧……
别说没做过就没发言权。看当年哥的SSAO(下图)做得多和谐、多自然:
有玩家反映阴影的开销很大。我看了一下它的PixelShader,用掉130多个指令槽,果然是效率比较低的,这还只是像素。再加上需要把(几乎)每个模型都投影到光源,因此……结果……就是现在这样了。
如果你对着色器的instruction slot没有概念,那么很简单,slot用得越多=GPU的工作量越大。我们可以对比一下:
最烂的、效果最差的阴影贴图,我试了一下,大概需要50个指令槽。
最常用的Blinn像素着色(基本上就是大家在游戏中见过最多的物体表面效果),在比较完整的、标准的情况下大约也是50个指令槽。
**2中多数的模型材质的像素着色器,少则三四十、多则七八十。
**2的DOF(景深)大约只需要45个slot,因此这个不会太浪费。
而LightShaft虽然也仅有40多,但需要迭代多次,因此开销会比较大。不过应该是做了降采样,所以尚可接受。
**2使用了Enhanced Subpixel Morphological Antialiasing(SMAA)。虽然SMAA需要150个指令槽,但它一帧只用一次,所以仍是比较高效的后期抗锯齿。
至于顶点着色器,简单说凡是会随风摆动的模型,基本都在120个slot以上。不过,大家可以这样理解:顶点的数量是比像素少很多的,如果不是**2在面数上的奢侈,这方面应该可以表现得比较正常。可惜,他们对基础的重视还有待加强。
最后,大家要清楚,现在的贴图精度,就算开到最高,也非常低。主角是很精致的,一张头发都有1024*1024。但其它NPC整个人顶多也就256*256。
假如正式版更“高清”,那么压力也会相应提升。
其它的嘛……
**2在CPU方面还有很大的优化空间。现在八成还是有内存泄露的可能性。具体就不多说了,主要是我不想花太多精力去评测一坨X。
以上仅代表我个人的观点,因为我也只是粗略分析,所以肯定会有错漏。希望大家不要太较真。
玩家点评 (0人参与,0条评论)
热门评论
全部评论