- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unity3d游戏开发之移动开发优化详解.
?优化正如 PC 一样,iOS 和安卓 (Android) 等移动平台也存在各种性能级别的设备。您可以轻松找到一部渲染效果比其他手机好 10 倍的手机。 缩放方法非常简单:
确保它在基准配置上正常运行
在高性能配置上使用更多特效:
分辨率
后处理
多重采样抗锯齿
各向异性
着色器
特效/粒子密度,打开/关闭
注重 GPU? ?? ? 图形性能与填充率、分辨率和几何体复杂度(顶点数)息息相关。如果找到方法剔除更多渲染,那么这三个要素的值都会降低。此时,遮挡剔除可起到有效作用。Unity 会自动剔除视锥外的对象。在移动平台上,基本上会受到填充率的约束(填充率 = 屏幕像素 * 着色器复杂度 * 透支度),着色器过于复杂是导致问题出现的最常见原因。因此,请使用 Unity 自带的移动着色器或自己设计,但要尽可能简单。如果可行,请将代码移动到顶点着色器中,简化像素着色器。如果降低质量设置 (Quality Settings) 中的纹理质量 (Texture Quality) 后游戏运行速度加快,那么很可能是受内存带宽所限。此时可压缩纹理、使用贴图细化,降低纹理大小等。LOD(细节等级)使对象更简单,或移向远方后完全消除。主要目的为减少绘制调用的次数。--来自狗刨学习网出色实践? ?? ???移动 GPU 对于自身产生多少热量、使用的电量以及尺寸大小或噪音大小有严格限制。与台式机部件相比,移动 GPU 的带宽较小、运算器 (ALU) 性能和纹理功率也较低。GPU 的架构也进行了调整,以尽量使用最小带宽和功率。? ?? ???Unity 针对 OpenGL ES 2.0 进行了优化,使用 GLSL ES(类似于高级着色语言 HLSL)着色语言。内置着色器大多使用高级着色器语言(即 HLSL,也称之为 Cg)编写。针对移动平台,其被交叉编译成 GLSL ES。如果您想要,也可以直接编写 GLSL,但这样会限制您访问 OpenGL 平台(如移动 + Mac),因为目前还没有 GLSL-HLSL 转换工具。在 HLSL 中使用浮点/半浮点/固定 (float/half/fixed) 类型时,它们在 GLSL ES 中会以 highp/mediump/lowp 精度限定符结尾。以下列出了一些出色实践:
尽量使材质数目减至最低,便于 Unity 轻松进行批处理。
使用纹理精灵(大贴图包含多个子贴图),而非许多单个纹理。使加载速度更快,状态转换更少,批处理简单方便。
如果使用纹理精灵和共享材质,请用 Renderer.sharedMaterial 代替 Renderer.material。
向前渲染像素灯比较耗性能。
尽量使用光照贴图代替实时灯光。
在质量设置中调整像素灯数目。基本上只有方向灯为逐像素,其他都为逐顶点。当然,这取决于游戏本身。
在质量设置 (Quality Settings) 中尝试调整灯光的渲染模式 (Render Mode of Lights),以获得正确优先级。
避免使用抠图(透明度测试)着色器,除非真正有必要。
将透明(alpha 混合)屏幕的覆盖范围保持在最小。
努力避免多个灯光照亮任何给定对象的情况。
努力降低着色器通道(阴影、像素灯、反射)的总数目。
渲染顺序很关键。一般情况下:
从前往后完全不透明的对象。
大致从前往后经 alpha 测试的对象。
天空盒。
alpha 混合对象(若需要,从后往前)。
在移动平台上进行后处理性能消耗大,请谨慎使用。
粒子:减少透支,尽量使用最简单的着色器。
每一帧都要修改的网格使用双缓存:
着色器优化检查填充率绑定是否容易:如果降低显示分辨率,游戏运行速度是否加快?若是,即受到了填充率的限制。尝试使用以下方法降低着色器的复杂度:
避免使用alpha 测试着色器,而是采用 alpha 混合版本。
使用简单、已优化的着色器代码(如 Unity 附带的“移动 (Mobile)”着色器)。
避免在着色器代码中使用性能消耗大的数学函数(如指数表达式、指数、对数、余弦、正弦、正切等)。考虑使用预计算的查找纹理代替。
为实现最佳性能,尽可能选择最低数值的精度格式(Cg 中的浮点、半浮点和固定 (float, half, fixed))。
注重 CPU? ?? ? 游戏受到 GPU 像素处理限制的情况时有发生。导致最终出现 CPU 未充分使用的情况,多核移动 CPU 尤其如此。将 GPU 中的一些工作移出来,放到 CPU 中处理往往是比较明智的做法(Unity 处理所有这些操作):网格蒙皮、小对象的批处理、粒子几何体更新。? ?? ? 慎用,不要盲目地全放到 CPU 中处理。如果不受绘制调用限制,那么随着剔除效率的降低和更多对象受到灯
文档评论(0)