您的位置:首页 > 其它

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

2017-08-31 00:00 567 查看

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 利用率。

除上述之外,这次 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 变得无比强大。

在这个 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 为开发者释放了强大的计算能力,使得很多原本只能在服务器做的事情,在手机端得以实现。历史证明,每次技术的重大变革都会带来很大的机遇,希望每一个读者都能从中受益,享受图形技术以及机器学习技术的盛宴。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: