转载

Qualcomm文艳山:移动游戏的性能优化奥义

在UNITE 2015大会上,Qualcomm中国GPU软件部门经理文艳山在演讲中分享了基于高通Adreno GPU和Unity游戏引擎的高性能图形体验。Adreno为开发者提供了诸多用于性能优化的工具,比如Adreno Profiler、Adreno Profiler Scrubber等。谈到3D图形优化,Yanshan Wen表示应减少工作量、Draw Call数量和数据带宽使用。

Qualcomm文艳山:移动游戏的性能优化奥义

Qualcomm中国GPU软件部门经理 文艳山

Adreno GPU架构剖析

Adreno是Qualcomm的集成GPU,专为移动平台设计。其中,Adreno 420能够带来更丰富、视觉逼真的图形体验,并支持完整的DirectX11 FL 11_2管线、OpenGL®ES 3.1以及动态硬件曲面细分技术和几何着色器。同时,GPU与无力计算器协同工作,让手机在运行游戏时可以精准还原游戏中的物理场景。

Qualcomm文艳山:移动游戏的性能优化奥义

Adreno 420对计算能力进行了升级,提高纹理采样的性能,支持高级的纹理过滤(各向异性)、ASTC,并对ROPs & Z进行改善。Adreno Tiled渲染架构能够最大限度地减少不必要的主机内存数据流量、降低功耗和使用透明/抗锯齿成本。Early Z (Depth) Reject特性可以防止不必要地使用GPU资源去绘制被遮挡物体的像素,并提高渲染包含不透明物体的大场景时的性能。 而其动态FlexRender™技术能够为更广泛的使用案例提供更好的性能和功耗,半精度双倍速率 (DRHP) 设计支持让开发者使用额外/复杂的着色器而不会影响性能。

移动游戏的性能优化

Adreno为开发者提供了诸多用于性能优化的工具,Adreno Profiler性能分析工具能够显示超过40个全局GPU性能数据,以及45+应用层面的GPU性能数据,支持重写超过45个关于GPU的属性,提供实时反馈以方便开发者分析性能瓶颈,可以显示和修改Programs和Shaders,并提供了针具具体应用的抓帧功能,比如:

  • 显示每个EGL/DX/CL API调用;
  • 显示每个draw的性能数据;
  • 显示包括textures、programs、shaders、buffers等的资源调度;
  • 重现所抓帧的每个draw call;
  • 显示context状态以及每个draw call带来的变化;
  • 重写默认资源以便分析性能瓶颈;
  • 使用不同渲染模式帮助显现和减少冗余的draw。

Qualcomm文艳山:移动游戏的性能优化奥义

Adreno Profiler Scrubber

Adreno Profiler Scrubber性能净化工具能够让开发者抓取某一帧进行调试,并支持单步调试每个draw call、输出截取的帧及其性能等数据,显示Wireframe、Overdraw、Binning layout、Color、Depth、Stencil buffers状态。Adreno Profiler Grapher性能绘图工具支持实时观测和显示GPU性能数据,支持重写默认应用数据和驱动状态,内容包括:不同大小的纹理材质、打开/关闭GL calls、修改EGL状态等。

3D图形优化建议

谈到图形优化,Yanshan Wen结合实践经验给出了减少工作量、Draw Call数量、数据带宽使用等建议。Yanshan Wen表示,当代3D游戏依赖于fragment的繁重工作量来达到逼真的效果,渲染到比显示分辨率要低的像素平面可以大幅降低fragment的处理时间。开发者应考虑在可接受的图像质量和性能范围内尽量使用低分辨率,对于锐利的2D HUD渲染和其他UI控制,可以采用较高分辨率渲染,然后和较低分辨率的帧进行合成。

每个draw call都会带来CPU上的工作量,如果多个物体使用同样的shader和图形状态(比如纹理、blend状态等),那么这些物体应该放在同一批处理,这样可以在一定程度上减少draw call的数量。

减少数据带宽使用有着两个途径:检查并减小游戏中使用的纹理大小、纹理压缩。对于最终只会占据屏幕几个像素的物体,不需要使用1024x1024大小的纹理。纹理压缩是减少带宽的重要工具,能够提高性能并降低功耗,所有包含色彩数据的纹理可采用ATC、ASTC、ETC1、ETC2格式进行压缩。

正文到此结束
Loading...