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 爲開發者釋放了強大的計算能力,使得不少本來只能在服務器作的事情,在手機端得以實現。歷史證實,每次技術的重大變革都會帶來很大的機遇,但願每個讀者都能從中受益,享受圖形技術以及機器學習技術的盛宴。