"Let’s talk iPhone", 这是即将发布的苹果大会广告语, 新版的iPhone5预计会在大会上发布,差不多的时间Flash11正式版也会发布,so, Let's talk flash11.
新版的Flash11最让人瞩目的特性就是硬件3d加速,并提供一套基于actionscript3的3d api,这将是web game一个新的起点,未来3d webgame应该会成为主流, adobe官方把新的3d技术叫做molehill, 它定位与高端图形渲染, 在windows上基于dx9, mac/linux上基于ogl1.3, 移动设备上基于openGL ES2.
molehill是所谓真正意义的3d, 比之前flash10的2.5要高效很多,flash10采用的是基于矢量的三角形变化,没有z-buffer,没有硬件加速,所以一般同屏就能处理千八百个三角形; 而molehill则是完全基于本地3d api, 基于shader的可编程管线, 可以全高清的情况下,以60帧率,渲染上百万个三角形, 这是官方的一个demo, 已经不低于客户端3d引擎的效果了.
在新的渲染架构下, video frame和3d buffer不再基于display list, 而是基于texture, 这将允许直接渲染到显卡内存里, 没有回读导致的gpu暂停, 从而根本上提高硬件渲染效率, 准确的说3d渲染是在最底层的,2d渲染在其上层,如图(就是游戏的做法,底层是3d渲染场景,上层是2d渲染ui等)
当然如果有需求把3d渲染放到2d上面, molehill提供了一个方法把3d渲染结果画到BitmapData里,当然这可能需要video memory read back了,在不同机器上效率不同,我之前有多篇blog介绍这个问题,有兴趣的朋友可以自行搜索.
ps:对于硬件不支持的机器, molehill自动采用软件渲染, 并保留全部硬件支持的特性, 对于程序员完全透明, 即便完全软件渲染, 也比之前flash10快10倍, 因为据说这部分技术是使用的SwiftShader,人家专业做纯软件渲染.
ps:molehill完全不支持固定管线渲染, 必须使用可编程管线,与dx10保持看齐.
ps:现在已经有不少基于flash11的3d引擎面试,其中不乏open source的,比如away3d, 据说adobe自己也在开发自有3d 引擎,帮助程序员快速搭建3d应用.
看到这些你是不是已经非常期待flash11的到来? 不管你期待与否 ,我是非常期待.