Metal (API)

Metal — низкоуровневый, малозатратный аппаратно-ускоряемый API для 3D-графики и вычислительных шейдеров, разработанный компанией Apple и впервые представленный в iOS 8. Metal объединяет функции, аналогичные OpenGL и OpenCL, в едином API. Цель Metal — повышение производительности за счёт низкоуровневого доступа к графическому процессору на платформах iOS, iPadOS, macOS, tvOS, watchOS и visionOS. По концепции он близок к другим низкоуровневым API, таким как Vulkan и DirectX 12.

Metal реализован в виде объектно-ориентированного API и поддерживает вызовы из Swift, Objective-C и C++17[1]. Управление работой GPU осуществляется через Metal Shading Language (MSL). По данным Apple: «MSL — это единый язык, обеспечивающий тесную интеграцию между графическими и вычислительными программами. Так как MSL основан на C++, он будет вам знаком и прост в использовании»[2].

Общие сведения
Metal
Тип 3D-графика и вычисления (API)
Разработчик Apple Inc.
Написана на Metal Shading Language (на базе C++14 в Metal 1–3, C++17 в Metal 4), Runtime/API: Objective-C, Swift, C++ (связка через Metal-cpp)
Операционные системы iOS, iPadOS, macOS, tvOS, watchOS, visionOS
Первый выпуск июнь 2014
Последняя версия 4 (июнь 2025)
Лицензия проприетарная
Сайт developer.apple.com/meta…

Возможности

Metal обеспечивает малозатратный доступ к GPU за счёт предварительного кодирования команд, которые затем асинхронно исполняются графическим процессором. Приложение само управляет моментом ожидания завершения исполнения, что позволяет разработчикам увеличивать пропускную способность, кодируя новые команды во время работы GPU, либо экономить энергию при явном ожидании. Кодирование команд происходит независимо на каждом потоке CPU, а состояния рендеринга предрассчитываются, позволяя драйверу оптимально готовить графический пайплайн ещё до исполнения команд[3].

В Metal реализованы расширенные возможности GPGPU благодаря использованию вычислительных шейдеров и собственного языка программирования, основанного на C++14. Для реализации языка используется Clang и LLVM[4].

Разработчики приложений могут создавать ресурсы Metal (буферы, текстуры), управлять их размещением на CPU, GPU или обоих, а также синхронизировать их состояния. Система управления ресурсами позволяет явно контролировать состояние ресурса на протяжении жизни командного кодировщика[5].[6]

На macOS Metal предоставляет разработчикам возможность выбирать, на каком GPU выполнять вычисления: интегрированном, дискретном (у части моделей Mac) или внешнем (через Thunderbolt). Разработчик может задавать предпочтения для выбора GPU для различных команд, что позволяет, например, поручить рендеринг сцены дискретному GPU, а пост-обработку и отображение — интегрированному[7].

Metal Performance Shaders

Metal Performance Shaders — высоко оптимизированная библиотека графических функций, помогающая разработчикам снизить трудозатраты на реализацию аппаратно-специфичных вычислений. Она включает в себя:

  • Алгоритмы фильтрации изображений
  • Обработку нейронных сетей
  • Продвинутые математические операции
  • Трассировку лучей[8]

История

Metal впервые стал доступен 2 июня 2014 года на устройствах под управлением iOS, оснащённых Apple A7 и новее[9]. На Mac поддержка Metal появилась начиная с 8 июня 2015 года — для моделей 2012 года и новее с выходом OS X El Capitan[10].

5 июня 2017 года на WWDC была объявлена вторая версия Metal — для macOS High Sierra, iOS 11 и tvOS 11. Metal 2 не является отдельным API и поддерживается теми же устройствами. В числе новшеств — улучшенное профилирование и отладка в Xcode, ускорение машинного обучения, снижение нагрузки на CPU, поддержка VR на macOS и расширенная работа с GPU Apple A11[11].

На WWDC 2020 была анонсирована миграция Mac на Apple Silicon. Компьютеры с такими процессорами получили новые GPU, сочетающие возможности macOS и iOS, оптимизированные под архитектуру TBDR от Apple[12].

В 2022 году на WWDC вышла третья версия — Metal 3, начавшая распространяться вместе с macOS Ventura, iOS 16 и iPadOS 16. Среди нововведений: фреймворк MetalFX для высокопроизводительного апскейлинга и сглаживания, поддержка mesh shader'ов[13]. Также появилась возможность программирования Metal API на C/C++ через metal-cpp[14].

В 2023 году на WWDC Apple представила Game Porting Toolkit для переноса игр с Windows 10/11. В него входят средства для тестирования бинарных файлов, слои трансляции с HLSL на MSL, а также привязки Metal-cpp. Джереми Сандмел анонсировал режим Game Mode для macOS Sonoma, а Хидео Кодзима сообщил о выходе Death Stranding в Mac App Store.

На WWDC 2024 был анонсирован Game Porting Toolkit 2 и выпуск новых игр Control: Ultimate Edition, Frostpunk 2 и Assassin's Creed Shadows для macOS.

На WWDC 2025 представлена четвёртая версия Metal (Metal 4) с единой системой кодирования команд, поддержкой нейронного рендеринга и технологиями MetalFX Frame Interpolation, а также денойзером трассировки лучей.

Платформы и совместимость

Поддерживаемые GPU

Первая версия Metal поддерживает[15]:

  • Apple A7 или новее, с iOS 8 или новее
  • Apple M1 или новее, с macOS 11 или новее
  • Процессоры Intel с графикой Ivy Bridge или новее, с OS X 10.11 или новее
  • Видеокарты AMD архитектуры GCN или RDNA с OS X 10.11+
  • NVIDIA архитектуры Kepler с OS X 10.11 – macOS 11
  • NVIDIA архитектуры Maxwell и Pascal с OS X 10.11 – macOS 10.13

Metal 2 поддерживает:

  • Apple A7 или новее, с iOS 11 или новее
  • Apple M1 или новее, с macOS 11 или новее
  • Процессоры Intel с графикой Skylake или новее, с macOS 10.13 или новее
  • AMD архитектуры GCN/RDNA, с macOS 10.13+

Metal 3 поддерживает[16]:

  • Apple A13 и новее, с iOS 16, iPadOS 16
  • Apple A14 и новее, с iOS 16, iPadOS 16+
  • Apple M1 и новее, с iPadOS 16+ или macOS 13+
  • Intel UHD 630 или Iris Plus (Kaby Lake и новее), с macOS Ventura (13)+
  • AMD RDNA (5000/6000 серии) и Pro Vega (5-е поколение GCN)

Metal 4 поддерживает:

Выпуски

История версий
Версия Дата выпуска Статус Ключевые изменения Источник
1 июнь 2014 стабильная Первый выпуск для iOS 8, поддержка устройств с A7 и новее [9]
2 июнь 2017 стабильная Поддержка macOS High Sierra, iOS 11, внедрение машинного обучения и VR, улучшения профилирования [11]
3 октябрь 2022 стабильная MetalFX, поддержка mesh shader'ов, API на C/C++ [13]
4 июнь 2025 стабильная Unified command encoder, MetalFX Frame Interpolation, нейронный рендеринг, денойзер трассировки лучей

Интеграции и экосистема

По данным Apple, на июнь 2017 года более 148 000 приложений напрямую используют Metal, а 1,7 миллиона — опосредованно через фреймворки[17].

Часть игр для macOS, использующие Metal для рендеринга, приведены ниже (по алфавиту):

Название Разработчик (macOS-версия) Движок Дата выхода на macOS (OpenGL/DirectX) Дата релиза с поддержкой Metal Примечания по поддержке Metal
Ark: Survival Evolved Studio Wildcard Unreal Engine 4 29 августа 2017
Assassin's Creed Shadows Ubisoft Quebec Ubisoft Anvil 20 марта 2025
ARMA 3 Virtual Programming Real Virtuality 31 августа 2015 Поддержка Metal в бета-режиме с 17 сентября 2017
Baldur's Gate III Larian Studios Divinity Engine 4.0 22 сентября 2023 Поддержка Metal в раннем доступе с 6 октября 2020
Ballistic Overkill Aquiris Game Studio Unity Engine 5 28 марта 2017
Batman: Arkham City Feral Interactive Unreal Engine 3 18 октября 2013 Поддержка Metal с 21 февраля 2019 (v1.2)
Batman: The Enemy Within Telltale Games Telltale Tool 8 августа 2017
BattleTech Harebrained Schemes Unity Engine 5 24 апреля 2018
Bioshock Remastered Feral Interactive Unreal Engine 2.5 22 августа 2017
Bioshock 2 Remastered Feral Interactive Unreal Engine 2.5 22 октября 2020
Cyberpunk 2077 CD Projekt REDengine 4 17 июля 2025 Поддержка Metal 4
Cities: Skylines Paradox Interactive Unity Engine 5 10 марта 2015 Поддержка Metal с 18 мая 2017
Civilization VI Aspyr Media LORE 24 октября 2016 Поддержка Metal с 5 апреля 2019
Company of Heroes 2 Feral Interactive Essence Engine 3 21 января 2015 Поддержка Metal с 19 октября 2018
Control: Ultimate Edition Remedy Entertainment Northlight Engine 26 марта 2025
Dead Island 2 Dambuster Studios Unreal Engine 4 24 июля 2025
Deus Ex: Mankind Divided Feral Interactive Dawn Engine 12 декабря 2017
DiRT Rally Feral Interactive EGO Engine 2.5 16 ноября 2017
Divinity: Original Sin II Larian Studios Divinity Engine 2 31 января 2019
Dota 2 Valve Source 2 18 июля 2013 MoltenVK с 26 февраля 2018[18]. Опция стала доступна с 31 мая 2018[19]

Примечания

  1. Getting started with Metal-CPP — Metal. Apple Developer. Дата обращения: 25 июля 2025.
  2. Metal Shading Language Specification. Apple Developer. Apple Inc.. Дата обращения: 25 июля 2025.
  3. Setting Up a Command Structure. Apple Inc.. Дата обращения: 25 июля 2025.
  4. Metal Shading Language Guide (англ.). Apple Developer (8 сентября 2014). Дата обращения: 10 сентября 2014.
  5. Apple Inc. Setting Resource Storage Mode. Apple Developer. Дата обращения: 25 июля 2025.
  6. Synchronizing a Managed Resource. Apple Developer. Apple Inc.. Дата обращения: 25 июля 2025.
  7. GPU Selection in macOS. Apple Developer. Apple Inc.. Дата обращения: 25 июля 2025.
  8. Metal Performance Shaders. Apple Developer. Дата обращения: 25 июля 2025.
  9. 1 2 Machkovech, Same Apple gets heavy with gaming, announces Metal development platform. Ars Technica. Condé Nast (2 июня 2014). Дата обращения: 25 июля 2025. Архивировано 2 июня 2014 года.
  10. Smith, Colin; Meza, Starlayne Apple Announces OS X El Capitan with Refined Experience & Improved Performance. Newsroom. Apple Inc. (8 июня 2015). Дата обращения: 25 июля 2025.
  11. 1 2 Metal 2. Apple Developer. Apple Inc. (20 ноября 2017). Дата обращения: 25 июля 2025. Архивировано 20 ноября 2017 года.
  12. Bring your Metal app to Apple Silicon Macs. Apple Developer. Дата обращения: 13 июля 2020.
  13. 1 2 Discover Metal 3. Apple Developer. Дата обращения: 24 июня 2022.
  14. Program Metal in C++ with metal-cpp. Apple Developer. Дата обращения: 10 сентября 2022.
  15. Chiappetta, Marco Apple Turns Its Back On Customers And NVIDIA With macOS Mojave. Forbes (11 декабря 2018). Дата обращения: 25 июля 2025.
  16. Metal feature set tables. Apple Inc.. Дата обращения: 25 июля 2025.
  17. Apple Inc. WWDC 2017 Platforms State of the Union. Apple Developer. Дата обращения: 25 июля 2025.
  18. Vulkan Applications Enabled on Apple Platforms (англ.), Khronos Group Press Release. Дата обращения: 24 февраля 2021.
  19. Larabel, Michael Initial Vulkan Performance On macOS With Dota 2 Is Looking Very Good (англ.). Phoronix (1 июня 2018). Дата обращения: 5 июня 2021.