Металл (API)

API рендеринга графики для iOS, macOS и tvOS

Металл
Разработчик(и)Apple Inc.
Первоначальный выпускИюнь 2014 г. ; 10 лет назад ( 2014-06 )
Стабильный релиз
24 / Октябрь 2022 ; 2 года назад ( 2022-10 )
Написано вЯзык шейдера : C++14 , среда выполнения/API: Objective-C
Операционная системаiOS , iPadOS , macOS , tvOS
Тип3D-графика и API вычислений
ЛицензияЗапатентованный
Веб-сайтdeveloper.apple.com/metal/

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

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

Функции

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

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

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

В macOS Metal может предоставить разработчикам приложений право выбора, какой графический процессор выполнять. Разработчики приложений могут выбирать между маломощным интегрированным графическим процессором центрального процессора, дискретным графическим процессором (на некоторых MacBook и Mac) или внешним графическим процессором, подключенным через Thunderbolt. Разработчики приложений также имеют предпочтения относительно того, как команды графического процессора выполняются на каком графическом процессоре, и предлагают, на каком графическом процессоре определенная команда будет наиболее эффективной для выполнения (команды для рендеринга сцены могут выполняться дискретным графическим процессором, в то время как постобработка и отображение могут обрабатываться интегрированным графическим процессором). [8]

Металлические шейдеры производительности

Metal Performance Shaders — это высокооптимизированная библиотека графических функций, которая может помочь разработчикам приложений достичь высокой производительности, одновременно уменьшая работу по поддержке специфических функций семейства графических процессоров. [9] Она предоставляет функции, в том числе:

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

История

Metal доступен с 2 июня 2014 года на устройствах iOS на базе Apple A7 или более поздней версии [10] и с 8 июня 2015 года на компьютерах Mac (модели 2012 года или более поздние) под управлением OS X El Capitan [11] .

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

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

На WWDC 2022 года Apple анонсировала третью версию Metal (Metal 3), которая дебютирует с выпуском macOS Ventura , iOS 16 и iPadOS 16. Metal 3 представляет фреймворк масштабирования MetalFX, который визуализирует сложные сцены за меньшее время на кадр с высокопроизводительным масштабированием и сглаживанием, поддержкой шейдеров сетки. [14] Также анонсирована возможность использования C/C++ для API Metal. [15]

Поддерживаемые графические процессоры

Первая версия Metal поддерживает следующее оборудование и программное обеспечение: [16]

  • Apple A7 SoC или более поздняя версия с iOS 8 или более поздней версией
  • Apple M1 SoC или более поздняя версия с macOS 11 или более поздней версией
  • Процессор Intel с Intel HD и графикой Iris Graphics серии 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.11macOS 10.13

Вторая версия Metal поддерживает следующее оборудование и программное обеспечение:

  • Apple A7 SoC или более поздняя версия с iOS 11 или более поздней версией
  • Apple M1 SoC или более поздняя версия с macOS 11 или более поздней версией
  • Процессор Intel с Intel HD и Iris Graphics серии Skylake или более поздней версии с macOS 10.13 или более поздней версии
  • AMD Graphics с архитектурой GCN или RDNA с macOS 10.13 или более поздней версией

Третья версия Metal поддерживает следующее оборудование и программное обеспечение: [17]

  • Apple A14 или более поздняя версия с iOS 16 , iPadOS 16 или более поздняя версия
  • Apple M1 SoC или более поздняя версия с macOS 13 или более поздней версией
  • Процессор Intel с Intel UHD 630 или Iris Plus (Kaby Lake или более поздняя версия) с macOS 13 или более поздней версией
  • AMD Graphics с архитектурой RDNA (серии 5000 и 6000) и Pro Vega ( архитектура GCN 5-го поколения)

Принятие

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

ЗаголовокРазработчик (версия macOS)Игровой движокДата выпуска MacOS (OpenGL/DirectX)Дата релиза на основе металлаМеталлическая опора заметки
Ковчег: Выживание ЭволюционировалоСтудия WildcardНереальный движок 429 августа 2017 г.
АРМА 3Виртуальное программированиеРеальная ВиртуальностьБудет объявлено дополнительноПоддержка Metal в бета-версии с 17 сентября 2017 г. [ требуется ссылка ]
Врата Балдура IIIЛариан СтудиосБожественный движок 4.022 сентября 2023 г.Поддержка Metal в раннем доступе с 6 октября 2020 г. [ необходима ссылка ]
Баллистический OverkillСтудия игр AquirisДвижок Unity 528 марта 2017 г.
Бэтмен: Аркхем СитиFeral ИнтерактивныйНереальный движок 318 октября 2013 г.Поддержка Metal с 21 февраля 2019 г. с версии 1.2 [ необходима ссылка ]
Бэтмен: Враг внутриTelltale ИгрыКонтрольный инструмент8 августа 2017 г.
BattleTechБезрассудные схемыДвижок Unity 524 апреля 2018 г.
Биошок РемастерингFeral ИнтерактивныйUnreal Engine 2.522 августа 2017 г.
Биошок 2 РемастерингFeral ИнтерактивныйUnreal Engine 2.522 октября 2020 г.
Города: ГоризонтыПарадокс ИнтерактивДвижок Unity 510 марта 2015 г.Поддержка металла с 18 мая 2017 г. [ необходима ссылка ]
Цивилизация VIАспир МедиаЛОРЕ24 октября 2016 г.Поддержка металла с 5 апреля 2019 г. [ требуется ссылка ]
Компания Героев 2Feral ИнтерактивныйЭссенция Двигатель 321 января 2015 г.Поддержка металла с 19 октября 2018 г. [ требуется ссылка ]
Deus Ex: Человечество РазделеноFeral ИнтерактивныйДвигатель рассвета12 декабря 2017 г.
Ралли по грязиFeral ИнтерактивныйДвигатель EGO 2.516 ноября 2017 г.
Божественность: Первородный грех IIЛариан СтудиосБожественный движок 231 января 2019 г.
Дота 2КлапанИсточник 218 июля 2013 г.MoltenVK был анонсирован 26 февраля 2018 года . [19] Возможность использовать его стала доступна 31 мая 2018 года . [20]
The Elder Scrolls ОнлайнОнлайн-студии ZenimaxН/Д4 апреля 2014 г.22 октября 2018 г.OpenGL Renderer заменен на Vulkan через оболочку MoltenVK (транслирует вызовы API Vulkan в Metal) в патче 4.2.5
Империя: Тотальная войнаFeral ИнтерактивныйДвигатель TW34 марта 2009 г.Поддержка металла с 16 декабря 2019 г. [ требуется ссылка ]
ЕВА ОнлайнИгры КПКН/Д6 ноября 2007 г.14 октября 2021 г.Ранее был доступен на macOS через DirectX 9.0 с ноября 2007 г. по февраль 2009 г.; собственная версия macOS с использованием Metal выпущена 14 ноября 2021 г. [ необходима ссылка ]
ЭверспейсМорской окуньНереальный движок 426 мая 2017 г.
Ф1 2016Feral ИнтерактивныйEGO-движок 4.06 апреля 2017 г.
Ф1 2017Feral ИнтерактивныйEGO-движок 4.025 августа 2017 г.
FortniteЭпические игрыНереальный движок 425 июля 2017 г.
ГравийВиртуальное программированиеНереальный движок 420 января 2019 г.
Стражи Галактики: Серия TelltaleTelltale ИгрыКонтрольный инструмент18 апреля 2017 г.
ХедлендерDouble Fine ProductionsДвигатель Будды18 ноября 2016 г.
Герои ШтормаБлиззард РазвлеченияДвигатель SC22 июня 2015 г.Поддержка Metal в бета-версии с 24 января 2017 г. (временно удалена 29 ноября 2017 г. [21] до ?) [ необходима ссылка ]
ХитмэнFeral ИнтерактивныйЛедник 220 июня 2017 г.
Жизнь странна: перед бурейFeral ИнтерактивныйДвижок Unity13 сентября 2018 г.
Жизнь Странная 2Feral ИнтерактивныйНереальный движок 42019
Мафия 3Аспир МедиаДвигатель иллюзий11 мая 2017 г.
Средневековье II: Тотальная войнаFeral ИнтерактивныйДвигатель TW 217 декабря 2015 г.Поддержка металла с 25 октября 2018 г. [ необходима ссылка ]
Мировая серия «Микромашины»Виртуальное программированиеДвижок Unity 530 июня 2017 г.
Minecraft: Story Mode — Второй сезонTelltale ИгрыКонтрольный инструмент11 июля 2017 г.
MXGP3Виртуальное программированиеНереальный движок 423 ноября 2018 г.
Наполеон: Тотальная войнаFeral ИнтерактивныйДвигатель TW32 июля 2013 г.Поддержка Metal с 25 октября 2019 г. с версии 1.2 [ необходима ссылка ]
ОбдукцияГолубые мирыНереальный движок 429 марта 2017 г.
НаблюдательКоманда BlooberНереальный движок 424 октября 2017 г.
Землетрясение IIid программное обеспечениеДвижок Quake II9 февраля 2019 г.Порт с использованием MoltenVK был выпущен как vkQuake2. [22]
ПереоборудованиеДоминик ГрисхоферНереальный движок 45 сентября 2016 г.
Обитель Зла ДеревняКапкомДвигатель RE28 октября 2022 г.Первая игра для macOS с поддержкой MetalFX
Восхождение расхитителя гробницFeral ИнтерактивныйДвигатель фундамента12 апреля 2018 г.
Тень расхитителя гробницFeral ИнтерактивныйДвигатель фундамента2019
Железные дороги Сида Мейера!Feral ИнтерактивныйGamebryo1 ноября 2012 г.Поддержка металла с 18 декабря 2018 г. [ необходима ссылка ]
Симс 3Максис Редвуд ШорсДвижок Sims 32 июня 2009 г.28 октября 2020 г.
Симс 4МаксисSmartSim17 февраля 2015 г.Металлическая опора добавлена ​​12 ноября 2019 г. [ необходима ссылка ]
Небо: Дети СветаThatgamecompanyН/Д18 июля 2019 г.Поддержка Native Metal добавлена ​​с момента предварительного глобального релиза в ноябре 2017 г.
СтаркрафтБлиззард РазвлеченияМодифицированный движок Warcraft II20 ноября 2001 г.Поддержка Metal с 2 июля 2020 г. с версии 1.23.5 [ необходима ссылка ]
StarCraft IIБлиззард РазвлеченияДвигатель SC227 июля 2010 г.Поддержка Metal в бета-версии с 24 января 2017 г. [ требуется ссылка ]
Расхитительница гробницFeral ИнтерактивныйДвигатель фундамента17 января 2014 г.Поддержка Metal с v1.2 в июле 2019 г. [ требуется ссылка ]
Total War: Rome РемастерингFeral ИнтерактивныйДвигатель TW 229 апреля 2021 г.
Тотальная война: Сёгун 2Feral ИнтерактивныйДвигатель TW331 июля 2014 г.Поддержка металла с 4 октября 2019 г. [ необходима ссылка ]
Total War: Shogun 2: Падение самураевFeral ИнтерактивныйДвигатель TW318 декабря 2014 г.Поддержка металла с 4 октября 2019 г. [ необходима ссылка ]
Тотальная война: Три королевстваFeral ИнтерактивныйДвигатель TW323 мая 2019 г.
Тотальная война: ВархаммерFeral ИнтерактивныйДвигатель TW319 апреля 2017 г.
Тотальная война: Warhammer IIFeral ИнтерактивныйДвигатель TW320 ноября 2018 г.
Total War Saga: Престолы БританииFeral ИнтерактивныйДвигатель TW324 мая 2018 г.
Total War Saga: ТрояFeral ИнтерактивныйДвигатель TW313 августа 2020 г.
Вселенная ПесочницаГигантская армияДвижок Unity 5Будет объявлено дополнительноПоддержка Metal в бета-версии с июня 2017 г. [ требуется ссылка ]
Нереальный турнирЭпические игрыНереальный движок 4ОтмененоПоддержка металла с января 2017 г. [ необходима ссылка ]
Гром войныГайдзин РазвлеченияДагор Двигатель 41 ноября 2012 г.Металлическая опора добавлена ​​24 мая 2017 г. (удалена в 2018 г. и вновь введена 27 августа 2020 г. ) [ необходима ссылка ]
Warhammer 40,000: Рассвет войны IIIFeral ИнтерактивныйЭссенция Двигатель 49 июня 2017 г.
СвидетельТекла, Inc.Двигатель Текла8 марта 2017 г.
Мир ВаркрафтаБлиззард РазвлеченияДвижок WoW23 ноября 2004 г.Поддержка металла с августа 2016 г. [ требуется ссылка ]
X-План 11Ламинарные исследованияН/Д30 мая 2017 г.Поддержка Metal в бета-версии с 2 апреля 2020 г. [23]

Смотрите также

  • Direct3DDirectX 12 представляет низкоуровневые API
  • Mantle – низкоуровневый API от AMD
  • Vulkan – преемник OpenGL с низкими накладными расходами
  • MoltenVK — библиотека совместимости программного обеспечения для запуска программного обеспечения Vulkan поверх API Metal
  • Веб-GPU
  • OpenGL — кроссплатформенный графический API

Ссылки

  1. ^ МакВертор, Майкл (9 сентября 2014 г.). «Это игра, которую Apple использовала для демонстрации iPhone 6». Polygon . Vox Media . Архивировано из оригинала 11 сентября 2014 г. . Получено 9 сентября 2014 г. .
  2. ^ «Начало работы с Metal-CPP - Metal».
  3. ^ Apple Inc. «Спецификация языка затенения металлов» (PDF) .
  4. ^ «Создание структуры командования». Apple Inc.
  5. ^ "Руководство по языку затенения металлов". 8 сентября 2014 г. Получено 10 сентября 2014 г.
  6. ^ Apple Inc. «Настройка режима хранения ресурсов».
  7. ^ «Синхронизация управляемого ресурса». Apple Inc.
  8. ^ "Выбор графического процессора в macOS". Apple Inc.
  9. ^ «Металлические шейдеры производительности».
  10. ^ Machkovech, Same (2 июня 2014 г.). «Apple серьезно занялась играми, анонсировала платформу разработки Metal». Ars Technica . Condé Nast .
  11. ^ Смит, Колин; Меза, Старлейн (8 июня 2015 г.). «Apple представляет OS X El Capitan с улучшенным интерфейсом и улучшенной производительностью». Newsroom . Сан-Франциско : Apple .
  12. ^ "Metal 2". Apple Developer . Apple . 20 ноября 2017 г. Архивировано из оригинала 20 ноября 2017 г. – через Wayback Machine .
  13. ^ «Перенесите свое приложение Metal на компьютеры Apple Silicon Mac». developer.apple.com . Получено 13 июля 2020 г. .
  14. ^ "Discover Metal 3". developer.apple.com . Получено 24 июня 2022 г. .
  15. ^ "Программирование Metal на C++ с помощью metal-cpp". developer.apple.com . Получено 10 сентября 2022 г. .
  16. ^ Чиаппетта, Марко (11 декабря 2018 г.). «Apple отворачивается от клиентов и NVIDIA с macOS Mojave». Forbes .
  17. ^ "Таблицы набора характеристик металла" (PDF) . Apple .
  18. ^ Apple Inc. «Обзор платформ на WWDC 2017».
  19. ^ «Приложения Vulkan доступны на платформах Apple». Пресс-релиз Khronos Group . Получено 24 февраля 2021 г.
  20. ^ Ларабель, Майкл (1 июня 2018 г.). «Первоначальная производительность Vulkan на macOS с Dota 2 выглядит очень хорошо». Phoronix . Получено 5 июня 2018 г.
  21. ^ "ЗАМЕТКИ ОБ ИЗМЕНЕНИИ БАЛАНСА HEROES OF THE STORM — 29 НОЯБРЯ 2017 Г.". news.blizzard.com . 29 ноября 2017 г.
  22. ^ Кондрак, Кшиштоф [@k_kondrak] (9 февраля 2019 г.). "vkQuake2 получает поддержку MacOS" ( Твит ) . Получено 9 февраля 2019 г. – через Twitter .
  23. ^ "X-Plane 11.50 Public Beta 1: Vulkan и Metal уже здесь". Разработчик X-Plane . 2 апреля 2020 г. Получено 2 апреля 2020 г.
  • Металл для разработчиков
  • Руководство по программированию металла (предварительное)
  • Демонстрация WWDC14; расширенная версия
  • Установка macOS 10.14 Mojave на Mac Pro (середина 2010 г.) и Mac Pro (середина 2012 г.) — статья Apple, в которой объясняется, какие графические процессоры совместимы с API Metal от Apple в операционной системе Mac OS 10.14 (Mojave)
Взято с "https://en.wikipedia.org/w/index.php?title=Metal_(API)&oldid=1255991950"