CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率相关的知识,希望对你有一定的参考价值。
参考技术A 本文从降低计算或设计分辨率来分如何提升性能, 仅提供一些可参考的思路。本文链接 CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率
相关链接 CocosCreator游戏性能优化(1):性能分析工具
CocosCreator游戏性能优化(2):合批渲染之RenderToTarget
GPU的Fragment Shader即片元着色器程序在执行的时候,会并行每个像素(严格定义是光栅化后的每个片元,也即resolution)都执行一次。
此时主要的性能小号取决于两方面:
1、片元着色器程序内部逻辑的复杂度和计算量。
2、需要执行的片元数量。
现在我们从削减片元数量的角度来提升性能
假设我们的图片TextureA。应用了ShaderA。
TextureA的宽高分别是1920和1080。
此时我们的片元着色器程序执行次数calcCount = 1920*1080 = 2,073,600次。即200万次。
这在很多普通机器上是可能存在性能问题的,即便shader逻辑不复杂。
因此我们TextureA的宽高减半, 传入片元着色器程序。计算后的calcCount = 960*540= 518,400次。即50万次。
执行完shader后通过线性拉伸来使用该处理过后地textureA,如下。
我们发现计算量降低为原来的1/4,而图的精度值仅降低了1/2.
因此,我们我们在对图的渲染精度要求不高或不需要的情况下,应尽可能地降低其计算分辨率,来提升性能。
通过上述分析启发,我们做游戏时,最初在决定设计分辨率的时候,应该预先考虑到这个问题。
在使用GPU渲染到纹理时,可以尽量减小目标纹理分辨率。使片元数量降低,从而降低计算量。
离屏渲染,和目标FrameBuffer分辨率有关。如果目标纹理分辨率能够降低,那么游戏中大部分对象的分辨率都会比较低,因而会带来非常可观的性能效率提升。
最后将RenderTexture传入节点进行scale拉伸,得到我们需要的实际显示效果。
本文链接 CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率
相关链接 CocosCreator游戏性能优化(1):性能分析工具
CocosCreator游戏性能优化(2):合批渲染之RenderToTarget
程序员必备的10个unity小技巧!!!
游戏技巧
游戏优化是游戏成功的必要条件。即使这个游戏设计的很好,但它仍可能存在性能问题。要确保用户的Unity游戏经过优化,请尝试以下提示。
1、性能问题的来源
在开始优化游戏之前,用户需要找出性能问题的来源。对于初学者来说,最好能确定这些问题来自GPU还是CPU。找到罪魁祸首有助于用户更好地进行优化,因为GPU和CPU都有不同的性能优化策略。
2、代码
性能优化很重要,但不要编写难以阅读和维护的代码。应根据用户获得的绩效收益做出决定。如果收益很高,请保留这些代码。
3、共享材质
尝试在场景中共享物体材质以提高每个场景的性能。
4、材质和算法
检查游戏在低分辨率中是否运行更流畅。如果是,则应该更换材质和算法,使游戏在高分辨率环境下流畅运行。
经验分享
1.
如果编辑器意外崩溃了,但场景未保存,这时可以打开工程目录,找到/Temp/_Backupscenes/文件夹,可以看到有后缀名为.backup的文件,将该文件的后缀名改为.unity拖拽到项目视图,即可还原编辑器崩溃前的场景。
2.
所有数值类型的字段,都支持在检视面板中直接输入简单的数值表达式。
3.
好不容易才调好的坐标,结果发现是在运行模式下,如果退出运行模式就还原了怎么办?可以在检视面板右键点击组件名,在弹出界面中选择Copy Component,然后退出运行模式后同样右键点击组件名,在弹出界面中选择Paste Component Values即可。
4.
分别按键盘键Q、W、E、R、T可以依次切换界面上的小工具,除此之外,按数字键2或3还可以切换场景为2D模式或3D模式。
5.
右键点击检视面板下方的预览窗口即可让预览窗口跳出来,然后自己选择合适的地方停靠,这样切换模型查看就不会影响到其它面板。想让预览窗口回到原位,只需右键点击窗口,在弹出菜单中选择Close Tab即可。
6.
在层次视图的搜索框中输入完整的脚本或组件名称,即可找到所有绑定了该脚本或组件的对象。或者在搜索框中输入t:加上某个类别如light,即可找到使用同类组件的对象。
7.
如果想在检视面板查看脚本的私有变量,只需点击Inspectore,在弹出菜单中选择Debug即
8.
场景视图和游戏视图同时显示,我们想要将场景视图放到最大,只需要将鼠标悬停在场景视图上,并同时按下快捷键:shift + 空格,就可以将场景视图设置为最大化。利用这个技巧,我们可以快速的在不同的视图中设置视图的最大化。
9.
对很多人来说,在场景视图中调整观察的角度、位置等等是一件十分简单的事情,但是如果真的要游戏中达到同样的效果,则必须去调整场景中的相机。
那么有没有什么方法能够直接让摄像机应用和Scene视图一样的设置呢?
首先选中场景中的摄像机,之后使用快捷键:shift + ctrl + f,就可以把Scene视图中的数据复制给选中的摄像机了。除了使用快捷键,我们还可以在菜单中选择相应的操作:GameObject->Align With View也可以达到相同的效果。
10.
我们在调整场景内的某些组件参数时,没有注意到自己是在Play Mode的模式下进行的,从而导致修改没有被保存下来。
这个问题的关键在于是我们没有意识到自己已经处在Play Mode,如果我们能够在修改参数的时候,清楚的意识到自己处于Play Mode,那么我们自然可以通过Copy Component来保存数据或者是选择在Editor Mode进行修改。因此,我们可以通过对编辑器染色来醒目的提醒自己,自己是否已经处于Play Mode了。
一个简单的方法就是在Play Mode给编辑器染上不同的颜色:
Edit->Preference->Color->Playmode tint
在这里,我们就可以修改Play Mode的编辑器颜色了,当然还有很多别的染色可以修改。
修改完之后,在Play Mode的编辑器大概效果是下面这样的:
这样,我们就能时刻意识到自己是否已经在Play Mode了。
以上是关于CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率的主要内容,如果未能解决你的问题,请参考以下文章
cocoscreator 2.4.x版本 drawcall优化 第一期(掌握控制drawcall数量的必要知识)