高通分享GPU框架特性、移动游戏性能优化,以及3D效果渲染技巧

5月18日,qualcomm在北京举行qualcomm骁龙游戏与图形开发者研讨会。qualcomm创新工程中心高级工程总监zack zhou、qualcomm工程师兼经理文艳山、qualcomm® cdma technologies (qct) 芯片部高级内容组高级工程师李娟、qualcomm资深工程师张涛,在现场为开发者们分享了qualcomm adreno gpu框架特性、移动游戏性能与功耗优化技巧,以及3d效果渲染技巧等话题。
qualcomm创新工程中心高级工程总监zackzhou
今天嘉宾们主要分享了基于adreno4系列的图形渲染、性能优化等话题。zack首先分享了一个数字:1万。根据统计,2014年,全国有大约1万多款手机游戏上市,出现这种井喷现象主要归因为两点,一方面是移动游戏市场日趋成熟,而且手机终端销量的剧增也进一步扩大了市场;另一方面,手机gpu的性能得到了提升,可以实现更多功能,这让更多游戏开发商能更容易地将现有游戏移植到移动端上。
adreno 4系列也分高中低端,有405、420、430。虽然他们的性能效果不一样,但优化方式和整体架构非常相似。zack在上午的分享中主要谈到了两点:tiled渲染架构和动态flex render技术。
tiled渲染其实就是指,在渲染游戏画面时,将画面分割为一个个小块,逐一进行渲染,而不是像传统地对画面整体做渲染。这样做的好处是,它可以最大限度地减少不必要的主机内存数据流量,可以降低功耗。当游戏的draw call过多时,肯定会让功耗增大,而这时芯片的温控机制会开始起作用,限制其性能的发挥,这就会出现我们常看到的卡顿、crash等现象。tiled渲染可以避免这种情况。同时,adreno可以根据画面的复杂度,在tiled渲染和直接渲染之间动态切换,这就是flex render技术。
在下午的分享中,zack给开发者们分享了一些性能优化和功耗优化的建议。首先就是减少工作量。对于中低端手机来说,1280×720是比较合理的图像选择,这个分辨率也同样适用于高端机型。在处理反射、折射等特效的时候,可以使用1/2分辨率甚至更小的buffer,它仍然可以产生极好的效果。
第二点就是减少draw call,因为每个draw call都会增加cpu的工作量,每一帧有50个draw call并不会带来影响,但是每一帧有500个draw call时则会大幅影响游戏性能。同时,当多个物体使用同样的shader和图形状态时,可以放在同一批进行处理,这样可以减少draw call的数量。第三点就是减少数据带宽的使用,比如使用纹理压缩、使用mipmap等。
qualcomm工程师兼经理文艳山
文艳山在上午的演讲中,分享了3d图形在adreno中从顶点处理、顶点装配、像素处理,到测试、混合的过程。同时,他还进一步介绍了tiled渲染的特点与原理。
有限的帧缓冲区带宽和更低的功耗要求,使得tiled渲染成为更为有效的方式。在gpu内部有一个独立的快速缓存叫gmem。每个图像都会被分割为一个个小的bin(qualcomm内部将这些被分割成一个个方块的图像称为bin)。bin的大小由gmem的大小除以渲染目标的格式(包括深度缓存的格式)和大小来决定。软件会为每个bin创建一个三角形“可见性数据流”。渲染过程会利用可见性数据流来绘制可见的像素点。每个bin的所有像素都被画到gmem中,gpu会降gmem中混合好的像素,以一个整体的形式写回到系统内存的帧缓冲区中,这叫做一次“resolve”。
qualcomm芯片部高级内容组高级工程师李娟
李娟分享了adreno
sdk、adreno sdk texture tools、visual
studio、骁龙llvm编译器等了相具体功能特性。qualcomm为游戏开发的编程、模拟、编译、部署、分析等每一个环节都提供应的开发与优化工具。以adreno sdk texture tools为例,它提供了以下特性:
并排观察原始图像和被压缩或解压缩后的图像
比较原始图像和被压缩或解压缩后图像的不同点
从中挑选16种压缩类型,包括etc,astc
保存图片成ktx或dds格式
许多压缩和非压缩纹理格式之间转换的实用工具
跨平台库和api支持
减少内存带宽需求
尝试不同的压缩和位深
找到最佳尺寸和视觉效果
qualcomm资深工程师张涛
张涛分享了如何绘制渲染皮肤、衣服布料、毛皮等材质,以及景深、玻璃扭曲等光影特效。
以皮肤为例,皮肤渲染是实时计算机图形学的难题之一。一方面这是因为皮肤光照的复杂性;另一方面,观察者对皮肤太熟悉了,一旦结果看起来“不像”他们就很难接受。关于皮肤的光照模型有几个,比如hanrahan和krueger在1993年的siggraph上首次将皮肤进行分层模拟计算光照反射。他们的方法看起来非常逼真,但是每个光照计算需要100个指令,这对于实时的要求来说太昂贵了。
在这个例子中,我们展示一个经过优化过的皮肤渲染算法,它可以运行在移动设备上。这个技术通过在阴影区域的漫反射中加入暖色调来逼近次表面散射。我们在漫反射计算中加入minnaert光照项,这是非常关键的一步,它使得皮肤看起来柔嫩,最后我们通过加入镜面高光使皮肤看起来富有光泽。

松下ALPHA阿尔法洗衣机惊艳亮相 将生活美学及健康科技发挥到了极致
AcrelCloud-9000新能源汽车充电桩建设及优化的对策
如果中国空间站用上了鸿蒙系统会怎么样?
运算放大器的类型有哪些?
广和通Cat6模组FM101-CG率先取得FCC认证
高通分享GPU框架特性、移动游戏性能优化,以及3D效果渲染技巧
华为和三思联合设计的LED全彩灯泡发布,这款产品有何特点?
浅析国产存储面临的挑战
编程语言的加载和执行过程
电阻触摸屏的工作原理
OLED屏和LCD屏对比 OLED屏存在的两大缺陷「瞎眼」和「烧屏」
低压灯带恒流驱动ICSM15101T低成本应用方案
走进人工智能产业基地,了解新兴职业人工智能训练师
孢子捕捉仪的作用及配置的介绍
小鹏汽车智能日:小鹏汽车发布多项智能科技
电流对时间求导出来的是什么
μC/OS的任务调度优化实现方法(编程)
Lynk使用卫星向Android手机成功发送短信
购买性价比高的LED强光手电筒,需要考虑哪些因素呢?
德赛西威:“融合型全自动泊车系统”