stringtranslate.com

Металл (API)

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 для рендеринга .

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

Ссылки

  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 г.

Внешние ссылки