iOS devices Metal Programming Guide

本文详细介绍了Metal框架的核心概念,包括命令提交模型、内存管理模型及独立编译代码在图形着色和数据并行计算中的应用。通过实例展示了如何使用Metal API编写应用程序,覆盖了渲染3D图形、数据并行处理、纹理和缓冲操作等关键方面。

https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014221

About Metal and This Guide

The Metal framework supports GPU-accelerated advanced 3D graphics rendering and data-parallel computation workloads. Metal provides a modern and streamlined API for fine-grained, low-level control of the organization, processing, and submission of graphics and computation commands, as well as the management of the associated data and resources for these commands. A primary goal of Metal is to minimize the CPU overhead incurred by executing GPU workloads.

At a Glance

This document describes the fundamental concepts of Metal: the command submission model, the memory management model, and the use of independently compiled code for graphics shader and data-parallel computation functions. The document then details how to use the Metal API to write an app.

You can find more details in the following chapters:

Prerequisites

You should be familiar with the Objective-C language and experienced in programming with OpenGL, OpenCL, or similar APIs.

See Also

The Metal Framework Reference is a collection of documents that describes the interfaces in the Metal framework.

The Metal Shading Language Guide is a document that specifies the Metal shading language, which is used to write a graphics shader or a compute function that is used by a Metal app.

In addition, several sample code projects using Metal are available in the Apple Developer Library.


Table of Contents Preface xvii Acknowledgments xxiii About the Author xxv Part I: Metal Basics 1 Chapter 1: What Is Metal? 3 History of Graphics APIs 4 Metal: The New Way to Do Graphics on Apple Platforms 6 Metal in Context: How Metal Complements and Supports Other Platform Frameworks 10 Summary 10 Chapter 2: Overview of Rendering and Raster Graphics 13 Representing the GPU 14 Preparing Data for the GPU 16 Summary 24 Chapter 3: Your First Metal Application (Hello, Triangle!) 25 Creating a Metal Application in Xcode (without Using a Template) 25 Creating a MTLDevice 28 Creating a CAMetalLayer 28 Creating a Vertex Buffer 29 A First Look at Shaders 31 Libraries, Functions, and Pipeline States 34 Introducing Render Passes 35 Introducing MetalKit Features and MTKView 39 Summary 40 Part II: Rendering and Graphics 41 Chapter 4: Essential Mathematics for Graphics 43 Language of Mathematics 43 Coordinate Spaces and Moving among Them 44 Points, Vectors, and Vector Operations 46 Normalization and Unit Vectors 49 Pythagorean Theorem 50 Sine, Cosine, and Tangent 52 Matrices and Matrix Operations 53 Transformations: Scale, Translation, Rotation, Projection 55 Summary 60 Chapter 5: Introduction to Shaders 61 Metal Shading Language Overview 61 Setting Up Shaders 63 Your First Shader: Pass Through 63 Writing Your First Shader 68 Uniform Buffer 74 Summary 82 Chapter 6: Metal Resources and Memory Management 83 Introduction to Resources in Metal 83 The Argument Table: Mapping between Shader Parameters and Resources 84 Buffers 85 Resource Options: Storage Mode, Cache Mode, Purgeability 86 Preparing Data for the Vertex Shader and Vertex Descriptors 87 Copying to and from Buffers 88 Introduction to Textures 89 Copying to and from Textures 93 Compressed Texture Support 94 The Blit Command Encoder 94 Generating Mipmaps 96 Summary 97 Chapter 7: Libraries, Functions, and Pipeline States 99 What Are Libraries and Functions? 99 The Metal Two-Phase Compilation Architecture 100 Creating Libraries at Compile Time and Runtime 101 Command Encoders 103 Render Pipeline Descriptors and State 104 Pipeline Reflection 105 Summary 105 Chapter 8: 2D Drawing 107 Metal Graphics Rendering Pipeline 107 Sample Project: Build a Star 108 Metal Primitive Types 113 Responding to MTKViewDelegate Methods 115 Retrieving a Drawable 115 Creating a Command Buffer 116 Creating a Command Encoder 117 Fixed-Function State on the Command Encoder 119 Passing Data to Shaders 121 Issuing Draw Calls 124 Scheduling and Enqueuing Command Buffers 124 Summary 126 Chapter 9: Introduction to 3D Drawing 127 Model-View-Projection Transformations 127 Clip Space and the View Frustum 131 Shading Models 136 Basic Lighting 138 Animation 140 Summary 141 Chapter 10: Advanced 3D Drawing 143 Constructing a Hierarchical World with Scene Graphs 143 Instanced Rendering 145 Summary 155 Chapter 11: Interfacing with Model I/O 157 What Are Model Files? 158 Importing a Model 161 Meshes and Submeshes 163 Render State Pipeline 164 Asset Initialization 165 Render State Setup and Drawing 166 Exporting Files 167 Summary 168 Chapter 12: Texturing and Sampling 169 Texture Mapping 169 Mipmapping 171 Sampling 172 Precompiled Sampler States 175 Passing Textures and Samplers to Graphics Functions 177 Summary 182 Chapter 13: Multipass Rendering Techniques 183 When (and Why) to Use Multipass Rendering 183 Metal Render Pass Descriptors 184 Creating and Managing Render Targets 185 Revisiting Load-Store Actions 188 Summary 190 Chapter 14: Geometry Unleashed: Tessellation in Metal 191 Removing Bottlenecks by Using Tessellation 191 Catmull-Clark Subdivision 192 Per-Patch Tessellation Factors 195 Metal Tessellation Fixed-Function Pipeline 197 Setting Up a Tessellation Kernel 201 Post-Tessellation Vertex Function 202 Draw Patches 204 Summary 208 Part III: Data Parallel Programming 209 Chapter 15: The Metal Compute Pipeline 211 Introduction to GPU Programming 212 Concurrency versus Parallelism 213 Using GPUs for General Computation 216 Kernel Functions 217 The Metal Compute Command Encoder 218 Issuing Grids of Work 220 Finding Your Way in the Grid inside the Kernel Function 223 Reading and Writing Resources in Kernel Functions 223 Summary 224 Chapter 16: Image Processing in Metal 225 Introduction to Image Processing 225 Creating a Metal Texture 227 Desaturation Kernels 230 Convolution and Dispatching a 2D Grid 232 Blur Effects 235 Selecting an Optimal Threadgroup Size 238 Summary 239 Chapter 17: Machine Vision 241 How a Computer Sees the World 241 Noise and Smoothing 242 Sobel Edge Detection 244 Thresholding 245 Histograms 246 Facial Recognition 246 Summary 253 Chapter 18: Metal Performance Shaders Framework 255 Overview of Metal Performance Shaders Framework 255 Image Processing with the MPS Framework 257 Matrix Operations with MPS 267 Summary 269 Chapter 19: Neural Network Concepts 271 Overview of Ne
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值