如果您以前没有听说过混合渲染这个词,那是因为这是个新词。广义上讲,混合渲染是通过使用芯片的多种不同路径来生成图形,其中一个例子就是使用GPU和CPU创建CGI电影帧。然而, 在Crank我们用这个术语来表示一个对嵌入式开发人员和设计师更有用的东西:用多个图形加速器渲染用户界面。
如果这一行为看起来很有趣,或者是令人困惑——请继续阅读。
在嵌入式领域,混合渲染意味着在同一个应用中用3D GPU和辅助图形处理器创建一个用户界面。辅助图形处理器必须能够加速2D图形(这通常是一个组合核心,但也可能有其他选择)。应用在运行时动态地切换加速器,这取决于需要显示什么图形。
最好的例子就是恩智浦7ULP芯片,它既有一个Open GL ES GPU,也有一个2D GPU加速器/合成器。2D GPU非常强大,可以加速alpha混合、缩放、旋转/镜像、叠加、线条、矩形、色彩空间转换等,而且消耗比3D GPU的同类产品低很多。
显著的节能
您可以用适当的3D设置来完成所有的绘图,同时使用3D和2D引擎会增加软件的复杂性。那么,为什么要这样做呢?
答案很简单:极大地节省消耗。使用3D GPU是有代价的——它会消耗大量电流,实际上是一个电池驱动的应用。但是,让您的应用只使用2D,会限制您产品的表现力和潜在的用例。混合渲染能让您获得两方面的好处——在您需要的时候有3D的丰富性,在您不需要的时候有2D的低功耗特性。
如果您对混合渲染能实现的差异感到好奇,恩智浦的工程师测量了我们的健身应用参考样例在3D菜单系统和2D图表部分的电流消耗。从下面的表格中可以看出,他们发现Storyboard独特的混合渲染工具平均耗电0.074安培——耗电量适中,电池寿命更长,在与3D或2D图形互动时,用户体验越来越出色,分辨率越来越高。
混合渲染其实并不复杂
在一个标准的图形框架中部署混合渲染,需要将应用分解成不同的块:一些处理3D的块,一些只用2D绘制的块,以及一个主合成器/启动器,它知道使用哪个图形系统调用哪些组件,如何以及何时操作硬件,当然还有协调这一切以便从用户的角度看来是无缝衔接的。因此,您可能会担心为了完成这一节省电池的技巧,您的应用架构会变得很复杂,这种担心是正常的。
值得庆幸的是,使用Crank Storyboard非常简单,因为Storyboard的渲染引擎知道用户界面屏幕是包含2D还是3D的,并自动使用最合适的GPU进行即时渲染。这意味着您不需要重新架构或重构您的代码来利用混合渲染的优势——您只需运行它。
注意:GPU的选择是在每一帧的基础上进行的。这意味着当同一帧上有混合的2D和3D内容时,Storyboard引擎不会使用两个GPU。(在某些硬件上使用两个GPU在技术上是可行的,但是这将插入大量的同步复杂性,同时使任何可能的功率优势变得无效)。
如果Storyboard在用户界面屏幕上发现了任何3D内容,它将使用3D加速器渲染整个画面(高功率使用),否则它将使用2D GPU渲染内容(低功率使用)。
为了充分利用混合渲染的省电应用,您需要在您的用户界面中周到地使用3D。将应用中的大部分内容保持在2D状态,以最大限度地提高电池寿命,只在需要区分或区别某个功能的地方添加3D。不要将3D添加到屏幕上的永久区域,如侧边栏或状态栏。
如果您的3D图形是静态的,可以考虑用预先渲染好的2D位图来显示它们。当然,给您的模型制作动画可以给它们带来巨大的生命力,所以从Blender、Maya或3D Studio等工具中导入3D模型到Storyboard中,在在任何你需要的地方提高图形商数——如果您还需要注意电池问题的话,就要注意增加的数量。
在物联网和可穿戴用户体验开发项目中,什么时候利用混合渲染才有意义?
随着物联网和可穿戴设备的激增,也许更好的问题是混合渲染在什么地方没有意义。我们看到很多地方都有使用案例。
可穿戴设备:智能手表、运动/健身追踪器、智能织物
医疗保健:病人监护、移动医疗、远程医疗产品
工业:智能建筑、电池供电的扫描器和打印机、物联网边缘设备
家居:智能家居中枢、智能灯开关、安全摄像头、小家电
交通工具:电动汽车、房车、航海导航
Storyboard让用户界面设计师掌握控制权
我们非常提倡提升用户界面设计师的作用,而混合渲染是一个完美的用例。这是因为,关于嵌入式应用是否利用混合渲染提供的节能功能的决定完全掌握在UI设计师手中。
换句话说,在这种情况下,您的设计师实际上可能比您的工程师更能控制您的功率预算。原因是,您的UI设计师将决定3D是否、何时、何地适合您的应用,这将对您的设备的电池寿命产生很大的影响。
有兴趣了解更多吗?
点击这里下载NXP 7ULP的Storyboard演示镜像。