Metal®
Programming Guide
Tutorial and Reference via Swift
Metal®
Programming Guide
Tutorial and Reference via Swift
Metal Basics
1“”
API
Metal: Apple
CPUGPU
GPU
GPU
Your First Metal Application (Hello, Triangle!)
Xcode
Xcode
MTL
CAMetalLayer
Issuing Draw Calls
MetalKitMTKView
Translation Matrix
I / O
Metal
MTKTextureLoader
Blit
Mipmap
The Metal
2D
Metal
MTKViewDelegate
Drawable
Issuing Draw Calls
3D
- -
Frustum
Gouraud Shading
Phong Shading
Ambient
3D
I / O
Texture Mapping
Mipmapping
Metal
Tessellation
Catmull-Clark
Per-Patch Tessellation Factors
GPU
GPU
CPU GPU
2D
Sobel
Viola-Jones
AdaBoost
MetalFramework
MPS
MPS
Biases
Sigmoid
MPSImage
MetalMetal
- “”
123
“”414
“” IIIMetal1520Metal
GPGPU
•1“”
•2“”Metal
•3“HelloTriangle”
MetalMetal
iPhone3D •4“”
TI-8310
•5“”
•6“”
MTLResource •7“”CPU
•8“2D”32D
•9“3D”3D •10“3D”
3DMetal •11“I / O”AppleBlenderMaya
3D •12“” •13
“” •14“
”
GPU •15“
” •16
“” •17“”
•18“”
•19“”
•20“”
Metal Basics
1“”
-Vernor Vinge 2014AppleiOS
GPUMetalMetalmacOSwatchOStvOS Apple
“”CPUGPU GPU
CPU
API
GPU
GPUGPGPUOpenGLGPGPU
OpenGLiPhone5
API
206070 James BlinnEdwin Catmull
208090
2080
1981Silicon
GraphicsSGI3D3D
3DAPIIRIS GL2080
2090 1992
IRIS GL APIOpenGL 1997OpenGL3DAPI
John CarmackidSoftwareDoom
QuakeQuake Carmack
OpenGL
OpenGLQuakeOpenGL
OpenGLOpenGL
2004OpenGL 2.0
OpenGLOpenGL C-like
GPU1.1
OpenGLAPI OpenGLGPU
OpenGL APICPUGPU
GPU
API
2003OpenGLOpenGL ES OpenGL ESOpenGL
GPU
OpenGL ESOpenGL
2007OpenGL ES 2.0
2007iPhoneiOS SDKAPIiPhone
OpenGL ESOpenGL ES
OpenGLSDKiPhone
2010AppleiPhoneOpenGL ES 2.0 Apple
iPhoneSprite KitScene KitGPU
OpenGL ESGPUGPUApple
/
Metal: Apple
iPhone
OpenGL APIOpenGLGPUCPU
Apple AppleGPU
OpenGL
MetalGPU
CPUGPU
CPUGPU CPUGPUGPUGPU
CPUCPUGPU
CPUGPUGPU
OpenGLCPUGPU
GPU1.2