版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.10.05 |
前言
很多做視頻和圖像的,相信對這個框架都不是很陌生,它渲染高級3D圖形,并使用GPU執行數據并行計算。接下來的幾篇我們就詳細的解析這個框架。
Metal是什么?
Metal
是一個和 OpenGL ES
類似的面向底層的圖形編程接口,通過使用相關的 api 可以直接操作 GPU。
注意:
Metal
只針對蘋果的平臺系統使用,不像OpenGL ES 那樣可以進行跨平臺使用但是它能最大的挖掘蘋果移動設備的 GPU 能力,進行復雜的運算,像 Unity 等游戲引擎都通過 Metal 對 3D 能力進行了優化。
下面看一下Metal在蘋果軟硬件框架里面的架構。
UIKit -> Core Graphics -> Metal/OpenGL ES -> GPU Driver -> GPU
Metal根據不同的 CommandBufferEncoder
可以提供不同的能力,除了優秀的 3D 渲染能力,Metal 還能提供強大的計算能力。
在 WWDC 2015,蘋果發布了 Metal Performance Shaders (MPS)
框架,iOS 9 上的一組高性能的圖像濾鏡,其實就是邊寫好的 Shaders,提供了優秀的圖像處理能力。同時還提供了高性能的矩陣運算的 Shaders ,能用來做機器學習的運算,在 GPU 上運行卷積神經網絡。
Metal的特點
下面看一下Metal的特點:
- GPU 支持的 3D 渲染
- 和 CPU 并行處理數據 (深度學習)
- 提供低功耗接口
- 與 CPU 共享資源內存
其實這個我們在平時圖像和視頻渲染的時候,都需要對每一幀像素進行很多的浮點型運算,這個運算其實CPU個GPU都可以做,但是GPU處理起來更有優勢,如果給CPU處理會很耗性能。通過有效的利用 GPU,可以成百倍甚至上千倍地提高手機上的圖像渲染能力。如果不是基于 GPU 的處理,手機上實時高清視頻濾鏡是不現實,甚至不可能的。
基本架構
下面看一下該框架的基本信息。
Metal
包括Metal framework
,MetalKit framework
,Metal shading language
和Metal standard library
。 您可以使用Metal來獲取對圖形處理單元(GPU)的低級和低開銷訪問,從而最大限度地提高圖形和計算應用的潛力。
下面我們就看一下這個框架的基本架構。
框架結構解析
下面我們就詳細的看一下這個框架的結構。
1. First Steps
-
- 了解Metal中基本的GPU編程。
-
- 說明如何與GPU進行交互。
-
- 說明如何渲染一個2D的三角形。
2. Fundamentals
-
Fundamental Components
- 與GPU交互,并了解如何存儲,組織和處理你的app數據。
3. Compute
-
Compute Processing
- 執行GPU上的計算處理工作負載,例如用于精密科學計算。
4. Graphics
-
Graphics Rendering
- 在GPU上執行圖形渲染工作負載,例如高端3D游戲中使用的圖形渲染工作負載。
5. Displays
-
Display Management
- 顯示屏幕上的Metal內容,無論是通過圖形渲染還是計算處理操作創建。
6. Tools
-
Tools, Profiling, and Debugging
- 使用
Metal API,Xcode
和Instruments
工具有效地配置和調試應用程序。
- 使用
7. Sample Code
-
- 通過以下介紹性課程和指導實例,了解如何開發Metal應用程序。
-
- 通過使用Metal功能有效地了解如何實現高級技術。
8. Classes
- MTLTileRenderPipelineColorAttachmentDescriptor
- MTLTileRenderPipelineColorAttachmentDescriptorArray
- MTLTileRenderPipelineDescriptor
9. Related Documentation
后記
未完,待續~~~