Metal框架详细解析(一)—— 基本概览
版本记录
版本号 | 时间 |
---|---|
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
后记
未完,待续~~~