Metal-翻譯筆記

Framework

Metal

使用圖形處理器渲染高級3D圖形並執行數據並行計算。

SDKs

  • iOS 8.0+

  • macOS 10.11+
  • tvOS 9.0+

On This PageOverviewTopicsSee Also

Overview

圖形處理器(GPU)旨在快速渲染圖形並執行數據並行計算。需要直接與設備上可用的GPU通信時,請使用Metal框架。渲染複雜場景或執行高級科學計算的應用程序可以使用此功能來實現最佳性能。此類應用包括:

  • 渲染複雜3D環境的遊戲

  • 視頻處理應用,如Final Cut Pro

  • 數據處理應用程序,例如用於執行科學研究的應用程序

Metal與其他框架密切配合,以補充其功能。使用MetalKit簡化在屏幕上獲取Metal內容的任務。使用“ 金屬性能着色器”實現自定義渲染功能或利用大型現有功能庫。

許多高級Apple框架都是基於Metal構建的,以利用其性能,包括Core ImageSpriteKitSceneKit。使用其中一個高級框架可以保護您免受GPU編程的細節影響,但編寫自定義Metal代碼可以使您獲得最高級別的性能。

Topics

GPU Devices

在運行時訪問GPU設備,這是Metal開發的基礎。

獲取默認GPU

選擇運行Metal代碼的系統默認GPU設備。

protocol MTLDevice

用於繪製圖形或進行並行計算的GPU的金屬接口。

在Mac上選擇GPU

通過考慮GPU功能,電源或性能特徵,選擇一個或多個運行Metal代碼的GPU。

Command Setup

設置基礎架構以在GPU上執行自定義代碼。

Setting Up a Command Structure設置命令結構

瞭解Metal如何在GPU上執行命令。

Devices and Commands設備和命令

演示如何訪問GPU並與之交互。

Labeling Metal Objects and Commands標記金屬對象和命令

爲Metal對象和命令分配有意義的標籤,以便您可以在捕獲的幀的調用列表中輕鬆識別它們。

protocol MTLCommandQueueprotocol MTLCommandQueue

組織命令緩衝區以由GPU執行的隊列。

protocol MTLCommandBufferprotocol MTLCommandEncoder

存儲編碼命令以供GPU執行的容器。

protocol MTLCommandEncoderprotocol MTLCommandEncoder

存儲編碼命令以供GPU執行的容器。

Advanced Command Setup高級命令設置

組織命令以獲得最大的併發性和最小的依賴性。

Graphics

通過發出繪製調用來渲染圖形,並在繪製到屏幕時選擇演示文稿對象。

Hello Triangle你好三角形

演示如何渲染簡單的2D三角形。

Basic Buffers基本緩衝區

演示如何使用頂點緩衝區管理數百個頂點。

Basic Texturing基本紋理

演示如何加載圖像數據和紋理四邊形。

protocol MTLRenderCommandEncoderprotocol MTLRenderCommandEncoder

用於編碼渲染過程的命令的對象。

protocol MTLParallelRenderCommandEncoderprotocol MTLParallelRenderCommandEncoder

分割單個渲染過程的對象,以便可以從多個線程同時進行編碼。

Render Pass渲染通行證

用於更新一組渲染目標的命令集合。

Render Pipeline渲染管道

應該如何呈現圖形基元的規範。

Vertex Data頂點數據

指定與圖形處理相關聯的紋理內的精確位置的點。

Presentation Objects演示對象

用於在屏幕上顯示金屬內容的各種用戶界面元素。

Parallel Computation

在GPU上並行處理任意計算。

Hello Compute你好計算

演示如何使用GPU執行數據並行計算。

About Threads and Threadgroups關於線程和線程組

瞭解Metal如何組織計算處理工作負載。

Calculating Threadgroup and Grid Sizes計算線程組和網格大小

在分派計算處理工作負載時,計算線程組和網格的最佳大小。

class MTLComputePipelineDescriptorclass MTLComputePipelineDescriptor

用於自定義編譯新計算管道狀態對象的方式的對象。

protocol MTLComputePipelineStateprotocol MTLComputePipelineState

包含已編譯計算管道的對象。

protocol MTLComputeCommandEncoderprotocol MTLComputeCommandEncoder

用於在計算傳遞中編碼命令的對象。

Shaders

Metal Shading Language.編寫GPU代碼。

Shader Authoring着色器創作

Metal Shading Language.編寫GPU代碼。

Libraries圖書館

將着色器組織到庫中。

Functions功能

檢索有關渲染和計算功能的信息。

Resources

創建對象以保存GPU數據。

設置資源存儲模式

設置存儲模式,以定義資源的內存位置和訪問權限。

protocol MTLResourceprotocol MTLResource

GPU可訪問的內存分配。

protocol MTLBlitCommandEncoderprotocol MTLBlitCommandEncoder

編碼器,用於編碼內存複製,過濾和填充命令。

Buffers緩衝區

創建和操作非結構化GPU資源。

Textures紋理

創建和操作結構化GPU資源。

Heaps

創建單個內存分配,您可以從中分配資源。.

Synchronization同步

管理對應用中資源的訪問,以避免數據危害。

Tools

Tools, Profiling, and Debugging工具,分析和調試

在命令行構建Metal函數庫,或使用Xcode調試問題,並提高性能。

Reducing the Memory Footprint of Metal Apps減少金屬應用的內存佔用量

瞭解在iOS和tvOS中有效使用內存的最佳實踐。

Cookbook

查看圖形技術的集合並試驗其伴隨示例代碼。

Deferred Lighting延期照明

演示如何實現利用獨特Metal功能的延遲照明渲染器。

Reflections with Layer Selection層選擇的反射

演示如何使用圖層選擇來減少反射對象所需的渲染過程的數量。

LOD with Function Specialization具有功能專業化的LOD

演示如何使用專用函數根據動態條件選擇細節級別。

Dynamic Terrain with Argument Buffers具有參數緩衝區的動態地形

演示如何使用參數緩衝區通過GPU驅動的管道實時渲染動態地形。

Interoperability

Mixing Metal and OpenGL Rendering in a View在視圖中混合金屬和Open GL渲染

使用可互操作的紋理在同一視圖中使用Metal和OpenGL繪製。

Basic Geometric Types

用於定義大小,位置和區域的結構。

struct MTLOriginstruct MTLOrigin

圖像或紋理中像素相對於左上角的位置,其座標爲(0,0)。

struct MTLRegionstruct MTLRegion

圖像或紋理中的矩形像素塊,由其左上角和大小定義。

struct MTLSizestruct MTLSize

一組聲明對象大小的維度,例如圖像,紋理,線程組或網格。

func MTLOriginMake(Int, Int, Int) -> MTLOriginfunc MTLOriginMake(Int, Int, Int) -> MTLOrigin

返回圖像或紋理中像素的位置。

func MTLRegionMake1D(Int, Int) -> MTLRegionfunc MTLRegionMake1D(Int, Int) -> MTLRegion

返回圖像或紋理數據的1D區域。

func MTLRegionMake2D(Int, Int, Int, Int) -> MTLRegionfunc MTLRegionMake2D(Int, Int, Int, Int) -> MTLRegion

返回圖像或紋理數據的2D矩形區域。

func MTLRegionMake3D(Int, Int, Int, Int, Int, Int) -> MTLRegion func MTLRegionMake3D(Int, Int, Int, Int, Int, Int) -> MTLRegion

返回圖像或紋理數據的3D立方體區域。

func MTLSizeMake(Int, Int, Int) -> MTLSizefunc MTLSizeMake(Int, Int, Int) -> MTLSize

返回對象的指定大小,例如紋理或線程組。

See Also

Related Documentation

Metal Shading Language Guide金屬着色語言指南

Metal Feature Sets 金屬特徵集

MetalKit金屬套件

使用更少的代碼,可以更快,更輕鬆地構建Metal應用程序。在標準金屬視圖中渲染圖形,從許多來源加載紋理,並使用模型I / O提供的模型高效工作。

Metal Performance Shaders 金屬性能着色器

利用針對每個Metal GPU系列的獨特特性進行微調的內核優化圖形和計算性能。

Metal Programming Guide

Metal Best Practices Guide

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章