Apple использовала мобильную многопользовательскую онлайн- игру на боевой арене Vainglory, чтобы продемонстрировать графические возможности Metal на мероприятии, посвященном анонсу iPhone 6 в сентябре 2014 года [1] | |
Разработчики) | Apple Inc. |
---|---|
изначальный выпуск | Июнь 2014 г . |
Стабильный выпуск | 3 / июнь 2019 |
Написано в | Язык шейдинга: C ++ 14 , Среда выполнения / API: Objective-C |
Операционная система | iOS , iPadOS , macOS , tvOS |
Тип | 3D-графика и вычислительный API |
Лицензия | проприетарный |
Интернет сайт | разработчик |
Металл является низким уровнем, с низким уровнем накладных расходов аппаратное ускорение 3D - графики и Compute Shader API , созданный Apple , . Он дебютировал в iOS 8 . Metal объединяет в одном API функции, аналогичные OpenGL и OpenCL . Он предназначен для повышения производительности, предлагая низкоуровневый доступ к оборудованию графического процессора для приложений на iOS , iPadOS , macOS и tvOS . Его можно сравнить с низкоуровневыми API на других платформах, таких как Vulkan и DirectX 12 .
Metal - это объектно-ориентированный API, который можно вызывать с помощью языков программирования Swift или Objective-C . Полноценное исполнение на графическом процессоре контролируется с помощью Metal Shading Language. Согласно рекламным материалам Apple: «MSL [Metal Shading Language] - это единый унифицированный язык, который обеспечивает более тесную интеграцию между графическими и вычислительными программами. Поскольку MSL основан на C ++, вы найдете его знакомым и простым в использовании». [2]
Особенности [ править ]
Metal стремится обеспечить доступ к графическому процессору с низкими издержками. Команды заранее кодируются, а затем отправляются в графический процессор для асинхронного выполнения. Приложение контролирует, когда ждать завершения выполнения, что позволяет разработчикам приложений увеличить пропускную способность, кодируя другие команды, пока команды выполняются на графическом процессоре, или экономить энергию, явно ожидая завершения выполнения графическим процессором. Кроме того, кодирование команд не зависит от ЦП, поэтому приложения могут кодировать команды для каждого потока ЦП независимо. Наконец, заранее вычисляются состояния рендеринга, что позволяет драйверу графического процессора заранее знать, как настроить и оптимизировать конвейер рендеринга перед выполнением команды. [3]
Metal улучшает возможности программирования GPGPU за счет использования вычислительных шейдеров . Metal использует специальный язык шейдинга на основе C ++ 14 ; это реализовано с помощью Clang и LLVM . [4]
Metal предлагает разработчикам приложений гибкость при создании ресурсов Metal (буферов, текстур и т. Д.). Ресурсы могут быть выделены на ЦП, ГП или на обоих и предоставляют средства для обновления и синхронизации выделенных ресурсов. Metal также может обеспечивать соблюдение состояния ресурса во время жизни кодировщика команд. [5] [6]
В macOS Metal может предоставить разработчикам приложений право по своему усмотрению указывать, какой графический процессор следует выполнять. Разработчики приложений могут выбирать между маломощным встроенным графическим процессором центрального процессора, дискретным графическим процессором (на некоторых MacBook и Mac) или внешним графическим процессором, подключенным через Thunderbolt. Разработчики приложений также имеют предпочтение относительно того, как команды графического процессора выполняются на каких графических процессорах, и предлагают рекомендации, на каком графическом процессоре определенная команда наиболее эффективна для выполнения (команды для рендеринга сцены могут выполняться дискретным графическим процессором, в то время как постобработка и отображение могут выполняться. обрабатывается встроенным графическим процессором). [7]
Шейдеры Metal Performance [ править ]
Metal Performance Shaders - это высокооптимизированная библиотека графических функций, которая может помочь разработчикам приложений достичь высокой производительности при одновременном сокращении работы по поддержке функций, специфичных для семейства графических процессоров. [8] Он предоставляет следующие функции:
- Алгоритмы фильтрации изображений
- Обработка нейронной сети
- Расширенные математические операции
- трассировка лучей
История [ править ]
Metal доступен со 2 июня 2014 года на устройствах iOS под управлением Apple A7 или новее [9], а с 8 июня 2015 года - на компьютерах Mac (модели 2012 года или новее) под управлением OS X El Capitan . [10]
5 июня 2017 года на WWDC Apple анонсировала вторую версию Metal, которая будет поддерживаться macOS High Sierra , iOS 11 и tvOS 11 . Metal 2 не является отдельным API от Metal и поддерживается тем же оборудованием. Metal 2 обеспечивает более эффективное профилирование и отладку в Xcode , ускоренное машинное обучение , снижение нагрузки на ЦП , поддержку виртуальной реальности в macOS и , в частности, особенности графического процессора Apple A11 . [11]
На WWDC 2020 Apple объявила о переходе с Mac на Apple Silicon . Mac, использующие Apple Silicon, будут оснащены графическими процессорами Apple с набором функций, объединяющим то, что ранее было доступно в macOS и iOS, и смогут использовать преимущества функций, адаптированных к архитектуре отложенного рендеринга на основе плитки (TBDR) графических процессоров Apple. [12]
Поддерживаемые графические процессоры [ править ]
В iOS, tvOS и macOS Metal поддерживает разработанные Apple SoC от Apple A7 или новее. В macOS Metal также поддерживает Intel HD и Iris Graphics серии HD 4000 или новее, графические процессоры AMD GCN и AMD RDNA . Графические процессоры NVIDIA поддерживаются, но драйверы Metal для новых устройств (серии 10 и новее) недоступны, начиная с macOS Mojave. [13]
Принятие [ править ]
По данным Apple, более 148 000 приложений используют Metal напрямую, а 1,7 миллиона используют его через высокоуровневые фреймворки по состоянию на июнь 2017 года. [14] Игры для macOS, использующие Metal для рендеринга , перечислены ниже.
Заголовок | Разработчик (версия для macOS) | Игровой движок | Дата выпуска (macOS) | Примечания |
---|---|---|---|---|
Цивилизация VI | Aspyr Media | ЗНАНИЯ | 24 октября 2016 г. | Металлическая опора с 5 апреля 2019 г. |
Бэтмен: Аркхем Сити | Feral Interactive | Unreal Engine 3 | 18 октября 2013 г. | Поддержка Metal с 21 февраля 2019 г. с v1.2 |
Dota 2 | Клапан | Источник 2 | 18 июля 2013 г. | О MoltenVK было объявлено 26 февраля 2018 года . [15] Возможность использовать это стало доступно 31 мая 2018 года . [16] |
Землетрясение II | id Программное обеспечение | Quake II движок | 9 февраля 2019 г. | Порт, использующий MoltenVK, был выпущен как vkQuake2. [17] |
Расхитительница гробниц | Feral Interactive | Foundation Engine | 17 января 2014 г. | Поддержка Metal с v1.2 в июле 2019 г. |
Восстание расхитительницы гробниц | Feral Interactive | Foundation Engine | 12 апреля 2018 г. | Доставка металлических опор при запуске |
Тень Расхитительницы гробниц | Feral Interactive | Foundation Engine | 2019 г. | Доставка металлических опор при запуске |
F1 2016 | Feral Interactive | EGO Engine 4.0 | 6 апреля 2017 г. | Доставка металлических опор при запуске |
Жизнь странная 2 | Feral Interactive | Unreal Engine 4 | 2019 г. | Доставка металлических опор при запуске |
Жизнь странна: перед бурей | Feral Interactive | Unity Engine | 13 сентября 2018 г. | Доставка металлических опор при запуске |
Божественность: Первородный грех II | Эльверилс | Божественный двигатель 2 | 31 января 2019 г. | Доставка металлических опор при запуске |
Компания Героев 2 | Feral Interactive | Двигатель сущности 3 | 21 января 2015 г. | Металлическая опора с 19 октября 2018 г. |
Hitman | Feral Interactive | Ледник 2 | 20 июн 2017 | Доставка металлических опор при запуске |
Железные дороги Сида Мейера! | Feral Interactive | Gamebryo | 1 ноября 2012 г. | Металлическая опора с 18 декабря 2018 г. |
Warhammer 40,000: Рассвет войны III | Feral Interactive | Двигатель сущности 4 | 9 июня 2017 г. | Доставка металлических опор при запуске |
Тотальная война: Вархаммер | Feral Interactive | Двигатель TW 3 | 19 Апрель 2017 г. | Доставка металлических опор при запуске |
Total War: Warhammer II | Feral Interactive | Двигатель TW 3 | 20 ноября 2018 г. | Доставка металлических опор при запуске |
Total War Saga: Thrones of Britannia | Feral Interactive | Двигатель TW 3 | 24 мая 2018 | Доставка металлических опор при запуске |
Total War Saga: Troy | Feral Interactive | Двигатель TW 3 | 13 августа 2020 г. | Доставка металлических опор при запуске |
Средневековье II: Тотальная война | Feral Interactive | TW Двигатель 2 | 17 декабря 2015 г. | Металлическая опора с 25 октября 2018 г. |
Империя: Тотальная война | Feral Interactive | Двигатель TW 3 | 4 марта 2009 г. | Металлическая опора с 16 декабря 2019 г. |
Наполеон: Тотальная война | Feral Interactive | Двигатель TW 3 | 2 июля 2013 г. | Поддержка Metal с 25 октября 2019 г. с v1.2 |
Total War: Shogun 2 | Feral Interactive | Двигатель TW 3 | 31 июля 2014 г. | Металлическая опора с 4 октября 2019 г. |
Total War: Shogun 2: Падение самураев | Feral Interactive | Двигатель TW 3 | 18 декабря 2014 г. | Металлическая опора с 4 октября 2019 г. |
Bioshock Remastered | Feral Interactive | Unreal Engine 2.5 | 22 августа 2017 г. | Доставка металлических опор при запуске |
Bioshock 2 Remastered | Feral Interactive | Unreal Engine 2.5 | 22 октября 2020 г. | Доставка металлических опор при запуске |
F1 2017 | Feral Interactive | EGO Engine 4.0 | 25 августа 2017 г. | Доставка металлических опор при запуске |
Deus Ex: Mankind Divided | Feral Interactive | Рассветный двигатель | 12 декабря 2017 г. | Доставка металлических опор при запуске |
DiRT Rally | Feral Interactive | Двигатель EGO 2.5 | 16 ноября 2017 г. | Доставка металлических опор при запуске |
Баллистический перебор | Игровая студия Aquiris | Unity Engine 5 | 28 марта 2017 г. | Доставка металлических опор при запуске |
BattleTech | Заядлые схемы | Unity Engine 5 | 24 апреля 2018 г. | Доставка металлических опор при запуске |
Мафия III | Aspyr Media | Иллюзионный двигатель | 11 мая 2017 | Доставка металлических опор при запуске |
Мир Warcraft | Blizzard Entertainment | WoW Engine | 23 ноября 2004 г. | Металлическая опора с августа 2016 г. |
Стар Крафт | Blizzard Entertainment | Доработанный движок Warcraft II | 20 ноября 2001 г. | Поддержка Metal со 2 июля 2020 г. с v1.23.5 |
StarCraft II | Blizzard Entertainment | Двигатель SC2 | 27 июля 2010 г. | Поддержка Metal в бета-версии с 24 января 2017 г. |
Герои бури | Blizzard Entertainment | Двигатель SC2 | 2 июня 2015 г. | Металл поддержки в бета - версии , так как 24 января 2017 года , временно удален на 29 ноября 2017 |
Fortnite | Эпические игры | Unreal Engine 4 | 25 июля 2017 г. | Доставка металлических опор при запуске |
Обдукция | Голубые миры | Unreal Engine 4 | 29 марта 2017 г. | Доставка металлических опор при запуске |
Everspace | Морской окунь | Unreal Engine 4 | 26 мая 2017 | Доставка металлических опор при запуске |
Ковчег: эволюция выживания | Студия Wildcard | Unreal Engine 4 | 29 августа 2017 г. | Доставка металлических опор при запуске |
Наблюдатель | Команда Bloober | Unreal Engine 4 | 24 октября 2017 г. | Доставка металлических опор при запуске |
Нереальный Турнир | Эпические игры | Unreal Engine 4 | Отменено | Металлическая опора с января 2017 г. |
Возврат | Доминик Грисхофер | Unreal Engine 4 | 5 сентября 2016 г. | Доставка металлических опор при запуске |
Города: горизонты | Paradox Interactive | Unity Engine 5 | 10 марта 2015 г. | Металлическая опора с 18 мая 2017 г. |
Вселенная Песочница | Гигантская армия | Unity Engine 5 | TBA | Поддержка Metal в бета-версии с июня 2017 г. |
Гром войны | Gaijin Entertainment | Дагор Двигатель 4 | 1 ноября 2012 г. | Металлическая опора добавлена 24 мая 2017 г. , удалена в какой-то момент в 2018 г. и вновь введена 27 августа 2020 г. |
Свидетель | Thekla, Inc | Thekla Engine | 8 марта 2017 г. | Доставка металлических опор при запуске |
Мировая серия Micro Machines | Виртуальное программирование | Unity Engine 5 | 30 июня 2017 г. | Доставка металлических опор при запуске |
Стражи Галактики: Серия Telltale | Telltale Games | Инструмент Telltale | 18 апреля 2017 г. | Доставка металлических опор при запуске |
Бэтмен: Враг внутри | Telltale Games | Инструмент Telltale | 8 августа 2017 г. | Доставка металлических опор при запуске |
Minecraft: Story Mode - второй сезон | Telltale Games | Инструмент Telltale | 11 июля 2017 г. | Доставка металлических опор при запуске |
ARMA 3 | Виртуальное программирование | Реальная виртуальность | TBA | Поддержка Metal в бета-версии с 17 сентября 2017 г. |
MXGP3 | Виртуальное программирование | Unreal Engine 4 | 23 ноября 2018 г. | Доставка металлических опор при запуске |
Гравий | Виртуальное программирование | Unreal Engine 4 | 20 января 2019 г. | Доставка металлических опор при запуске |
X-Plane 11 | Ламинарные исследования | Кастомный двигатель | 30 мая 2017 | Поддержка Metal находится в стадии бета-тестирования со 2 апреля 2020 г. [18] |
Headlander | Double Fine Productions | Будда Двигатель | 18 ноября 2016 г. | Доставка металлических опор при запуске |
The Sims 4 | Maxis | SmartSim | 17 февраля 2015 г. | Добавлена металлическая опора 12 ноября 2019 г. |
См. Также [ править ]
- Direct3D - DirectX 12 представляет низкоуровневые API
- Mantle - низкоуровневый API от AMD
- Vulkan - преемник OpenGL с низкими накладными расходами
- MoltenVK - программная библиотека совместимости для запуска программного обеспечения Vulkan поверх Metal API
- WebGPU
Ссылки [ править ]
- ^ McWhertor, Майкл (9 сентября 2014). «Это игра, которую Apple использовала, чтобы продемонстрировать iPhone 6» . Многоугольник . Vox Media . Архивировано 10 сентября 2014 года . Проверено 9 сентября 2014 года .
- ^ Apple Inc. "Спецификация языка затенения металлов" (PDF) .
- ^ «Настройка структуры команд» . Apple Inc.
- ^ "Руководство по языку затенения металлов" . 8 сентября 2014 . Проверено 10 сентября 2014 года .
- ^ Apple Inc. «Настройка режима хранения ресурсов» .
- ^ «Синхронизация управляемого ресурса» . Apple Inc.
- ^ «Выбор графического процессора в macOS» . Apple Inc.
- ^ "Шейдеры Metal Performance" .
- ^ Machkovech, Same (2 июня 2014). «Apple увлекается играми, - анонсирует платформу разработки Metal» . Ars Technica . Condé Nast .
- ^ Смит, Колин; Меза, Старлейн (8 июня 2015 г.). «Apple представляет OS X El Capitan с улучшенными возможностями и улучшенной производительностью» . Новости . Сан-Франциско : Apple .
- ^ "Архивная копия домашней страницы Metal, ноябрь 2017" . Разработчик Apple . Apple . 20 ноября 2017 г. Архивировано 20 ноября 2017 г. - через Wayback Machine .CS1 maint: bot: original URL status unknown (link)
- ^ «Перенесите свое приложение Metal на Apple Silicon Mac» . developer.apple.com . Проверено 13 июля 2020 года .
- ^ Chiappetta, Marco (11 декабря 2018). «Apple отворачивается от клиентов и NVIDIA с macOS Mojave» .
- ^ Apple Inc. «Состояние платформ WWDC 2017 в Союзе» .
- ^ «Приложения Vulkan, доступные на платформах Apple» . Пресс-релиз Хронос Груп . Проверено 24 февраля 2021 года .
- ^ Larabel, Майкл (1 июня 2018). «Первоначальная производительность Vulkan на macOS с Dota 2 выглядит очень хорошо» . Фороникс . Проверено 5 июня 2018 года .
- ^ Kondrak, Кшиштоф [@k_kondrak] (9 февраля 2019). «vkQuake2 получает поддержку MacOS» (твит) . Проверено 9 февраля 2019 г. - через Twitter .
- ^ «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-интерфейсами Apple Metal в операционной системе Mac OS 10.14 (Mojave)