Разработчик(и) | Apple Inc. |
---|---|
Первоначальный выпуск | Июнь 2014 г. ( 2014-06 ) |
Стабильный релиз | 24 / Октябрь 2022 ( 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]
Вторая версия Metal поддерживает следующее оборудование и программное обеспечение:
Третья версия Metal поддерживает следующее оборудование и программное обеспечение: [17]
По данным Apple, по состоянию на июнь 2017 года более 148 000 приложений используют Metal напрямую, а 1,7 миллиона используют его через высокоуровневые фреймворки . [18] Ниже перечислены игры для macOS, использующие Metal для рендеринга .
Заголовок | Разработчик (версия macOS) | Игровой движок | Дата выпуска MacOS (OpenGL/DirectX) | Дата релиза на основе металла | Металлическая опора заметки |
---|---|---|---|---|---|
Ковчег: Выживание Эволюционировало | Студия Wildcard | Нереальный движок 4 | 29 августа 2017 г. | ||
АРМА 3 | Виртуальное программирование | Реальная Виртуальность | Будет объявлено дополнительно | Поддержка Metal в бета-версии с 17 сентября 2017 г. [ требуется ссылка ] | |
Врата Балдура III | Лариан Студиос | Божественный движок 4.0 | 22 сентября 2023 г. | Поддержка Metal в раннем доступе с 6 октября 2020 г. [ необходима ссылка ] | |
Баллистический Overkill | Студия игр Aquiris | Движок Unity 5 | 28 марта 2017 г. | ||
Бэтмен: Аркхем Сити | Feral Интерактивный | Нереальный движок 3 | 18 октября 2013 г. | Поддержка Metal с 21 февраля 2019 г. с версии 1.2 [ необходима ссылка ] | |
Бэтмен: Враг внутри | Telltale Игры | Контрольный инструмент | 8 августа 2017 г. | ||
BattleTech | Безрассудные схемы | Движок Unity 5 | 24 апреля 2018 г. | ||
Биошок Ремастеринг | Feral Интерактивный | Unreal Engine 2.5 | 22 августа 2017 г. | ||
Биошок 2 Ремастеринг | Feral Интерактивный | Unreal Engine 2.5 | 22 октября 2020 г. | ||
Города: Горизонты | Парадокс Интерактив | Движок Unity 5 | 10 марта 2015 г. | Поддержка металла с 18 мая 2017 г. [ необходима ссылка ] | |
Цивилизация VI | Аспир Медиа | ЛОРЕ | 24 октября 2016 г. | Поддержка металла с 5 апреля 2019 г. [ требуется ссылка ] | |
Компания Героев 2 | Feral Интерактивный | Эссенция Двигатель 3 | 21 января 2015 г. | Поддержка металла с 19 октября 2018 г. [ требуется ссылка ] | |
Deus Ex: Человечество Разделено | Feral Интерактивный | Двигатель рассвета | 12 декабря 2017 г. | ||
Ралли по грязи | Feral Интерактивный | Двигатель EGO 2.5 | 16 ноября 2017 г. | ||
Божественность: Первородный грех II | Лариан Студиос | Божественный движок 2 | 31 января 2019 г. | ||
Дота 2 | Клапан | Источник 2 | 18 июля 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 Интерактивный | Двигатель TW3 | 4 марта 2009 г. | Поддержка металла с 16 декабря 2019 г. [ требуется ссылка ] | |
ЕВА Онлайн | Игры КПК | Н/Д | 6 ноября 2007 г. | 14 октября 2021 г. | Ранее был доступен на macOS через DirectX 9.0 с ноября 2007 г. по февраль 2009 г.; собственная версия macOS с использованием Metal выпущена 14 ноября 2021 г. [ необходима ссылка ] |
Эверспейс | Морской окунь | Нереальный движок 4 | 26 мая 2017 г. | ||
Ф1 2016 | Feral Интерактивный | EGO-движок 4.0 | 6 апреля 2017 г. | ||
Ф1 2017 | Feral Интерактивный | EGO-движок 4.0 | 25 августа 2017 г. | ||
Fortnite | Эпические игры | Нереальный движок 4 | 25 июля 2017 г. | ||
Гравий | Виртуальное программирование | Нереальный движок 4 | 20 января 2019 г. | ||
Стражи Галактики: Серия Telltale | Telltale Игры | Контрольный инструмент | 18 апреля 2017 г. | ||
Хедлендер | Double Fine Productions | Двигатель Будды | 18 ноября 2016 г. | ||
Герои Шторма | Близзард Развлечения | Двигатель SC2 | 2 июня 2015 г. | Поддержка Metal в бета-версии с 24 января 2017 г. (временно удалена 29 ноября 2017 г. [21] до ?) [ необходима ссылка ] | |
Хитмэн | Feral Интерактивный | Ледник 2 | 20 июня 2017 г. | ||
Жизнь странна: перед бурей | Feral Интерактивный | Движок Unity | 13 сентября 2018 г. | ||
Жизнь Странная 2 | Feral Интерактивный | Нереальный движок 4 | 2019 | ||
Мафия 3 | Аспир Медиа | Двигатель иллюзий | 11 мая 2017 г. | ||
Средневековье II: Тотальная война | Feral Интерактивный | Двигатель TW 2 | 17 декабря 2015 г. | Поддержка металла с 25 октября 2018 г. [ необходима ссылка ] | |
Мировая серия «Микромашины» | Виртуальное программирование | Движок Unity 5 | 30 июня 2017 г. | ||
Minecraft: Story Mode — Второй сезон | Telltale Игры | Контрольный инструмент | 11 июля 2017 г. | ||
MXGP3 | Виртуальное программирование | Нереальный движок 4 | 23 ноября 2018 г. | ||
Наполеон: Тотальная война | Feral Интерактивный | Двигатель TW3 | 2 июля 2013 г. | Поддержка Metal с 25 октября 2019 г. с версии 1.2 [ необходима ссылка ] | |
Обдукция | Голубые миры | Нереальный движок 4 | 29 марта 2017 г. | ||
Наблюдатель | Команда Bloober | Нереальный движок 4 | 24 октября 2017 г. | ||
Землетрясение II | id программное обеспечение | Движок Quake II | 9 февраля 2019 г. | Порт с использованием MoltenVK был выпущен как vkQuake2. [22] | |
Переоборудование | Доминик Грисхофер | Нереальный движок 4 | 5 сентября 2016 г. | ||
Обитель Зла Деревня | Капком | Двигатель RE | 28 октября 2022 г. | Первая игра для macOS с поддержкой MetalFX | |
Восхождение расхитителя гробниц | Feral Интерактивный | Двигатель фундамента | 12 апреля 2018 г. | ||
Тень расхитителя гробниц | Feral Интерактивный | Двигатель фундамента | 2019 | ||
Железные дороги Сида Мейера! | Feral Интерактивный | Gamebryo | 1 ноября 2012 г. | Поддержка металла с 18 декабря 2018 г. [ необходима ссылка ] | |
Симс 3 | Максис Редвуд Шорс | Движок Sims 3 | 2 июня 2009 г. | 28 октября 2020 г. | |
Симс 4 | Максис | SmartSim | 17 февраля 2015 г. | Металлическая опора добавлена 12 ноября 2019 г. [ необходима ссылка ] | |
Небо: Дети Света | Thatgamecompany | Н/Д | 18 июля 2019 г. | Поддержка Native Metal добавлена с момента предварительного глобального релиза в ноябре 2017 г. | |
Старкрафт | Близзард Развлечения | Модифицированный движок Warcraft II | 20 ноября 2001 г. | Поддержка Metal с 2 июля 2020 г. с версии 1.23.5 [ необходима ссылка ] | |
StarCraft II | Близзард Развлечения | Двигатель SC2 | 27 июля 2010 г. | Поддержка Metal в бета-версии с 24 января 2017 г. [ требуется ссылка ] | |
Расхитительница гробниц | Feral Интерактивный | Двигатель фундамента | 17 января 2014 г. | Поддержка Metal с v1.2 в июле 2019 г. [ требуется ссылка ] | |
Total War: Rome Ремастеринг | Feral Интерактивный | Двигатель TW 2 | 29 апреля 2021 г. | ||
Тотальная война: Сёгун 2 | Feral Интерактивный | Двигатель TW3 | 31 июля 2014 г. | Поддержка металла с 4 октября 2019 г. [ необходима ссылка ] | |
Total War: Shogun 2: Падение самураев | Feral Интерактивный | Двигатель TW3 | 18 декабря 2014 г. | Поддержка металла с 4 октября 2019 г. [ необходима ссылка ] | |
Тотальная война: Три королевства | Feral Интерактивный | Двигатель TW3 | 23 мая 2019 г. | ||
Тотальная война: Вархаммер | Feral Интерактивный | Двигатель TW3 | 19 апреля 2017 г. | ||
Тотальная война: Warhammer II | Feral Интерактивный | Двигатель TW3 | 20 ноября 2018 г. | ||
Total War Saga: Престолы Британии | Feral Интерактивный | Двигатель TW3 | 24 мая 2018 г. | ||
Total War Saga: Троя | Feral Интерактивный | Двигатель TW3 | 13 августа 2020 г. | ||
Вселенная Песочница | Гигантская армия | Движок Unity 5 | Будет объявлено дополнительно | Поддержка Metal в бета-версии с июня 2017 г. [ требуется ссылка ] | |
Нереальный турнир | Эпические игры | Нереальный движок 4 | Отменено | Поддержка металла с января 2017 г. [ необходима ссылка ] | |
Гром войны | Гайдзин Развлечения | Дагор Двигатель 4 | 1 ноября 2012 г. | Металлическая опора добавлена 24 мая 2017 г. (удалена в 2018 г. и вновь введена 27 августа 2020 г. ) [ необходима ссылка ] | |
Warhammer 40,000: Рассвет войны III | Feral Интерактивный | Эссенция Двигатель 4 | 9 июня 2017 г. | ||
Свидетель | Текла, Inc. | Двигатель Текла | 8 марта 2017 г. | ||
Мир Варкрафта | Близзард Развлечения | Движок WoW | 23 ноября 2004 г. | Поддержка металла с августа 2016 г. [ требуется ссылка ] | |
X-План 11 | Ламинарные исследования | Н/Д | 30 мая 2017 г. | Поддержка Metal в бета-версии с 2 апреля 2020 г. [23] |