从 WWDC17 看苹果图形技术的革新

Introducing Metal 2

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 的重要性。学习

Vision Framework: Building on Core ML

借助于机器学习在计算机视觉方面的技术突破,新的 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 的模型,这样开发者就能够用机器学习的技术来训练本身的模型,从而开发出更增强大的计算机视觉方面的应用。

Introducing ARKit: Augmented Reality for iOS

要说此次大会对开发者来讲,最大的惊喜是哪项技术,那就非 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 使得开发过程变得更加简单。

Introducing HEIF and HEVC

随着摄像头技术的提高,高清的图片和视频在手机中所占用的空间愈来愈大,苹果推出了新的图片以及视频编码格式,极大地提高了视频以及图片的显示质量。

高效图像文件格式(HEIF)和高效率视频编码(HEVC)是用于存储和传送图像和视听媒体的强大的新技术。在这个 Session 中,Gavin Thomson 和 Athar Shan 介绍了这些下一代节省空间的编解码器及其相关的容器格式,如何在 Apple 平台上与他们合做,以及如何在本身的应用程序中利用它们。

相比于 H.264,HEVC(High Efficiency Video Coding)能够节省 50%的存储空间以及传输带宽。一样,HEIF 相比较 JEPG,也能够节省 50%的存储空间。在 iOS 11 中,苹果平台提供了建立、访问以及传输的支持,来解决与其余平台的兼容性问题。

Advances in Core Image: Filters, Metal, Vision, and More

Core Image 基于 Metal,为图片、视频的处理提供了简单而强大的接口。在这个 Session 上,David Hayward 介绍了有关如何使用 Core Image 的最新功能的全部细节、有效渲染图像的新方法、如何在 Metal Shader 中建立自定义 CIKernels,并介绍了全部新的 CIFILTER,其中包括对图像处理应用于深度数据和处理条形码的支持。 
新的 Core Image 主要对开发友好型上作了提高,体如今如下三个方面:

  • 性能,能够用 Metal 来写 CIKernels,以及提供新的 CIRenderDestination API;
  • 调试信息,提供 CIRenderInfo API,而且 Xcode 提供了 Quick Looks;
  • 新的功能,新的滤镜以及对二维码、条形码和图像 depth 的支持。

在这个 Session 中,最让人惊讶的一个应用场景是在二维码的识别中,当手指挡住了二维码的一部分,应用 Machine Learning 技术,Core Image 能够自动补全被挡住的二维码。

     源码下载:http://www.jinhusns.com/Products/Download/?type=yhq

总结

ARKit、CoreML 和 Metal 2 这些新技术的推出,为移动开发提供了新的可能性,ARKit 使得在应用中集成 AR 特性变得无比简单。MoreML 则可以让咱们的应用变得愈来愈智能,而 Meal 2 为开发者释放了强大的计算能力,使得不少本来只能在服务器作的事情,在手机端得以实现。历史证实,每次技术的重大变革都会带来很大的机遇,但愿每个读者都能从中受益,享受图形技术以及机器学习技术的盛宴。

相关文章
相关标签/搜索