Metal 2 是 GPU 编程的重大更新,它能够直接访问图形处理器(GPU),为应用和游戏提供了强大的图形渲染和计算能力。Metal 2 的突破性功能使 GPU 可以控制渲染管道的运行,Metal 能够经过 GPU 实时指定基本任务,极大地提高了图像渲染的效率。所以,Metal 2 在这次 WWDC 上扮演着相当重要的角色,可谓是 VR、AR 以及机器学习的基石。
在这个 Session 中,苹果 GPU 软件工程师 Michal Valient 和 Richard Schreyer,介绍了 Metal 技术的关键在于 GPU 编程方面,使得资源需求大的操做或指令只执行一次,从而极大地提高了 GPU 的利用率,下面就详细介绍它是如何作到的。编程
为了进一步提高 GPU 程序执行效率,Metal 2 引入了 Argment Buffers、Raster Oder Groups、Promotion Displays 以及 Direct to Display 等新技术。这些新技术一块儿,提高了 Metal 2 程序的性能,使得 GPU 编程更加简单,并扩展了 GPU 的应用场景。服务器
其中,为了减小开销,免去每次 Draw Command 以前都要作的 texture 或 buffer 的 binding,苹果引入了 Argment Buffers 来把全部须要用到的资源(texture、buffer、sampler 或常量) 统一放到 Argment Buffer 上,若是资源来自于 heap,为了进一步节省 CPU 时间,驱动程序甚至能够不作 Resouce Tracking。架构
Raster Order Groups 容许显式指定 Raster Order,它使得 Fragment Shaders 能够访问 Ordered memory,可以用来实现 Order-independent transparency、Dual-layer GBuffers、Voxelization、custom blending 之类的功能。框架
Promotion display 功能可以帮助实现每秒 120 帧的渲染,而且支持 Arbitrary presentation time,来消除每帧之间渲染的抖动,好比能够均匀的渲染出 50FPS。机器学习
Direct to Display 对于全屏幕来讲,能够省去 compositor 的过程,直接渲染到屏幕上,以得到更高的 CPU 利用率。ide
除上述以外,此次 Session 上还介绍了 Metal 2 的其余一些特性,好比内存管理方面的 Memory Usage Queries、Buffer 间数据共享的 SIMDGroup-scoped Data Sharing、有助于线程管理的 Non-uniform Thread group Sizes 以及渲染相关的 Viewport Arrays 等。而因为这些针对 GPU 编程的新技术的使用,使得 Metal 2 的渲染计算速度,相比于 OpenGL 有 10 的提高。性能
在此次大会上,GPU 编程技术 Metal 被推到了一个相当重要的位置上,几乎全部的图形技术,以及机器学习技术都依赖于 Metal 的强大性能优点。另外,从苹果工程师处获得确认,苹果已经再也不在 OpenGL 相关技术上进行新的研发,这进一步突显了 Metal 的重要性。学习
借助于机器学习在计算机视觉方面的技术突破,新的 Version Framework 提供了更加精准的面部检测、脸部关键部位计算、物体追踪、文字识别、矩形框识别以及二维码识别等功能,为基于摄像头的应用打下了坚实的基础。更重要的是,开发者还能够在 Vision 模型中包装任何图像分析 Core ML 模型,这就使得 Vision Framework 变得无比强大。ui
在这个 Session 上,苹果工程师 Brett Keating 和 Frank Deopke 介绍了 Version Framework 能完成的一些挑战性的任务。以脸部识别为例,Version 既能在合影中,识别出很是小的面部,也能够识别出在高速行驶列车上人的侧脸,或戴着帽子和眼睛的脸部,甚至能识别出吃泡泡糖孩子的脸部,尽管泡泡糖已经挡住了三分之二的面庞。编码
图 1 多人合影中的脸部关键部位识别
脸部关键部位的识别功能,在多人合影的状况下,也有出色的表现。如图 1 所示,当照片或视频中有多我的脸的状况下,脸部关键部分识别能准确识别出图像中每一个面孔的脸部特征。
而图像拼接功能,则能够将多张同一地点拍的的照片,合成为一张全景图。在此之中,Version Framework 可以识别并去除图片间冗余的部分,最终合成一个完美的全景照片。
此外,Version Framework 对矩形的识别、二维码的识别、文字的检测,以及物体追踪等的表现也很是优异。
除了以上的功能,Version Framework 还提供了 imaging pipeline 以支持 Core ML 的模型,这样开发者就能够用机器学习的技术来训练本身的模型,从而开发出更增强大的计算机视觉方面的应用。
要说此次大会对开发者来讲,最大的惊喜是哪项技术,那就非 ARKit 莫属了,iOS 11 推出的 ARKit 使得 iPhone 成为了最大的 AR 平台,有强大的 API 支持,也大幅下降了开发 AR 相关应用和游戏的技术难度。
ARKit 为 iPhone 和 iPad 开发加强现实(AR)应用程序提供了一个前沿平台。在这个 Session 上,Mike Buerli 和 Stefan Misslinger 介绍了 ARKit 框架,以及如何利用其强大的位置跟踪和场景理解功能。如何与 SceneKit 和 SpriteKit 无缝集成来制做 AR 游戏,并介绍了如何直接控制使用 Metal 2 进行渲染。
ARKit 的核心技术点在于对虚拟世界的定位,包括位置和方向、物理距离、相对于起始位置的定位等。
其次,还包含对场景的理解、屏幕的检测、光线以及虚拟物体的检测。目前,3D 游戏引擎 Unity 以及 Unreal 已经提供了对 ARKit 的支持。
对一个 AR 应用来讲,除了要用 ARKit 来进行加强现实技术的计算,还须要用到 SceneKit、SpriteKit、Metal 等渲染技术,以最终将虚拟对象渲染到屏幕上,如图 2 所示。
图 2 AR 应用架构
而 ARKit 自己是基于视频框架 AVFoundation 和核心移动框架 CoreMotion 来实现的,如图 3 所示。其中,AVFoundation 提供当前摄像头的实时图像,CoreMotion 则负责手机摄像头移动的相对位置。
图 3 ARKit 架构
具体的处理过程如图 4 所示,经过 ARSessionConfiguration 去初始化一个 Session,ARSession 结合 AVCaptureSesson 以及 CMMotionManager 进行运算,最后生成当前针 ARFrame 去渲染。其中,ARSessionConfiguration 负责配置管理,AVCaptureSession 负责图像信息捕获,CMMotionManager 负责提供摄像头的相对移动位置。这些信息做为输入给 ARSession, 在计算并绘制好须要实现的图像后,输出 ARFrame 给其余渲染模块,从而将 AR 图像显示到屏幕上。
图 4 ARKit 内部 API 框架
总的来讲,AR 技术是对 3D 图形处理、运动检测以及渲染进行综合的技术,苹果提供了易用的 API 使得开发过程变得更加简单。
随着摄像头技术的提高,高清的图片和视频在手机中所占用的空间愈来愈大,苹果推出了新的图片以及视频编码格式,极大地提高了视频以及图片的显示质量。
高效图像文件格式(HEIF)和高效率视频编码(HEVC)是用于存储和传送图像和视听媒体的强大的新技术。在这个 Session 中,Gavin Thomson 和 Athar Shan 介绍了这些下一代节省空间的编解码器及其相关的容器格式,如何在 Apple 平台上与他们合做,以及如何在本身的应用程序中利用它们。
相比于 H.264,HEVC(High Efficiency Video Coding)能够节省 50%的存储空间以及传输带宽。一样,HEIF 相比较 JEPG,也能够节省 50%的存储空间。在 iOS 11 中,苹果平台提供了建立、访问以及传输的支持,来解决与其余平台的兼容性问题。
Core Image 基于 Metal,为图片、视频的处理提供了简单而强大的接口。在这个 Session 上,David Hayward 介绍了有关如何使用 Core Image 的最新功能的全部细节、有效渲染图像的新方法、如何在 Metal Shader 中建立自定义 CIKernels,并介绍了全部新的 CIFILTER,其中包括对图像处理应用于深度数据和处理条形码的支持。
新的 Core Image 主要对开发友好型上作了提高,体如今如下三个方面:
在这个 Session 中,最让人惊讶的一个应用场景是在二维码的识别中,当手指挡住了二维码的一部分,应用 Machine Learning 技术,Core Image 能够自动补全被挡住的二维码。
源码下载:http://www.jinhusns.com/Products/Download/?type=yhq
ARKit、CoreML 和 Metal 2 这些新技术的推出,为移动开发提供了新的可能性,ARKit 使得在应用中集成 AR 特性变得无比简单。MoreML 则可以让咱们的应用变得愈来愈智能,而 Meal 2 为开发者释放了强大的计算能力,使得不少本来只能在服务器作的事情,在手机端得以实现。历史证实,每次技术的重大变革都会带来很大的机遇,但愿每个读者都能从中受益,享受图形技术以及机器学习技术的盛宴。