版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.10.05 |
前言
很多做視頻和圖像的类浪,相信對這個框架都不是很陌生邮偎,它渲染高級3D圖形,并使用GPU執(zhí)行數(shù)據(jù)并行計算棵里。接下來的幾篇我們就詳細(xì)的解析這個框架润文。
Metal是什么?
Metal
是一個和 OpenGL ES
類似的面向底層的圖形編程接口殿怜,通過使用相關(guān)的 api 可以直接操作 GPU典蝌。
注意:
Metal
只針對蘋果的平臺系統(tǒng)使用,不像OpenGL ES 那樣可以進(jìn)行跨平臺使用但是它能最大的挖掘蘋果移動設(shè)備的 GPU 能力稳捆,進(jìn)行復(fù)雜的運算赠法,像 Unity 等游戲引擎都通過 Metal 對 3D 能力進(jìn)行了優(yōu)化麦轰。
下面看一下Metal在蘋果軟硬件框架里面的架構(gòu)乔夯。
UIKit -> Core Graphics -> Metal/OpenGL ES -> GPU Driver -> GPU
Metal根據(jù)不同的 CommandBufferEncoder
可以提供不同的能力,除了優(yōu)秀的 3D 渲染能力款侵,Metal 還能提供強(qiáng)大的計算能力末荐。
在 WWDC 2015,蘋果發(fā)布了 Metal Performance Shaders (MPS)
框架新锈,iOS 9 上的一組高性能的圖像濾鏡甲脏,其實就是邊寫好的 Shaders,提供了優(yōu)秀的圖像處理能力。同時還提供了高性能的矩陣運算的 Shaders 块请,能用來做機(jī)器學(xué)習(xí)的運算娜氏,在 GPU 上運行卷積神經(jīng)網(wǎng)絡(luò)。
Metal的特點
下面看一下Metal的特點:
- GPU 支持的 3D 渲染
- 和 CPU 并行處理數(shù)據(jù) (深度學(xué)習(xí))
- 提供低功耗接口
- 與 CPU 共享資源內(nèi)存
其實這個我們在平時圖像和視頻渲染的時候墩新,都需要對每一幀像素進(jìn)行很多的浮點型運算贸弥,這個運算其實CPU個GPU都可以做,但是GPU處理起來更有優(yōu)勢海渊,如果給CPU處理會很耗性能绵疲。通過有效的利用 GPU,可以成百倍甚至上千倍地提高手機(jī)上的圖像渲染能力臣疑。如果不是基于 GPU 的處理盔憨,手機(jī)上實時高清視頻濾鏡是不現(xiàn)實,甚至不可能的讯沈。
基本架構(gòu)
下面看一下該框架的基本信息郁岩。
Metal
包括Metal framework
,MetalKit framework
缺狠,Metal shading language
和Metal standard library
驯用。 您可以使用Metal來獲取對圖形處理單元(GPU)的低級和低開銷訪問,從而最大限度地提高圖形和計算應(yīng)用的潛力儒老。
下面我們就看一下這個框架的基本架構(gòu)蝴乔。
框架結(jié)構(gòu)解析
下面我們就詳細(xì)的看一下這個框架的結(jié)構(gòu)。
1. First Steps
-
- 了解Metal中基本的GPU編程驮樊。
-
- 說明如何與GPU進(jìn)行交互薇正。
-
- 說明如何渲染一個2D的三角形。
2. Fundamentals
-
Fundamental Components
- 與GPU交互囚衔,并了解如何存儲挖腰,組織和處理你的app數(shù)據(jù)。
3. Compute
-
Compute Processing
- 執(zhí)行GPU上的計算處理工作負(fù)載练湿,例如用于精密科學(xué)計算猴仑。
4. Graphics
-
Graphics Rendering
- 在GPU上執(zhí)行圖形渲染工作負(fù)載,例如高端3D游戲中使用的圖形渲染工作負(fù)載肥哎。
5. Displays
-
Display Management
- 顯示屏幕上的Metal內(nèi)容辽俗,無論是通過圖形渲染還是計算處理操作創(chuàng)建。
6. Tools
-
Tools, Profiling, and Debugging
- 使用
Metal API篡诽,Xcode
和Instruments
工具有效地配置和調(diào)試應(yīng)用程序崖飘。
- 使用
7. Sample Code
-
- 通過以下介紹性課程和指導(dǎo)實例,了解如何開發(fā)Metal應(yīng)用程序杈女。
-
- 通過使用Metal功能有效地了解如何實現(xiàn)高級技術(shù)朱浴。
8. Classes
- MTLTileRenderPipelineColorAttachmentDescriptor
- MTLTileRenderPipelineColorAttachmentDescriptorArray
- MTLTileRenderPipelineDescriptor
9. Related Documentation
后記
未完吊圾,待續(xù)~~~