Apple Metal for very beginners. Series
I’m planning a series of articles on Apple Metal. Below is a list of the topics I’ll cover. Some of these may be split into multiple parts due to the depth and volume of information.
As API may change rapidly, the series is more explamation of principles and ideas rather than step-by-step tutorials.
Season 1: Fundamentals
- What is Metal
- Metal Architecture
- Metal Shading Language
- Primitives pt.1: Buffers
- Primitives pt.2: Textures
- Blitting
- Rendering pt.1: What’s under hood
- Rendering pt.2: Rendering pipeline
- Rendering pt.3: Shaders
- Computing
- Metal Performace Shaders
- MPSGraph
- Metal Stitchable Functions
- MetalKit
- SwiftUI pt.1: Metal View
- SwiftUI pt.2: Effects
- SwiftUI pt.3: visionOS
Season 2: Tools
- Profiling pt.1: Xcode
- Profiling pt.2: Instruments
- Devices and Simulators
- GPU Frame Capture pt.1: From UI
- GPU Frame Capture pt.2: From Code
- GPU Frame Capture pt.3: Profiling
- GPU Frame Capture pt.4: Debugging
- Manual Solutions
Season 3: Optimisations
- Why we need optimisation
- Common sense vs Tools
- Useless synchronisations
- Number of encoders
- Fill-rate
- Number of draw calls
- Shaders pt.1: Sampling
- Shaders pt.2: Numerical Types
- Shaders pt.3: Math Operations
- Textures Cache
- Memory pt.1: Storage
- Memory pt.2: Heaps
- Memory pt.3: Data packing and padding
- Computing pt.1: Rendering vs Computing
- Computing pt.2: Thread Groups size
If you’re interested in this topic, please follow along. Feel free to bookmark this article — I’ll be adding links to the series as they’re published. And if you have any thoughts or additions, don’t hesitate to share them in the comments. Your feedback is greatly appreciated.