Открыть сервис

Metal 3

Metal 3 — это проприетарный графический API (интерфейс программирования приложений) низкого уровня, разработанный компанией Apple Inc. для операционных систем macOS, iOS, iPadOS, tvOS и visionOS. API обеспечивает прямой доступ к вычислительным ресурсам графических процессоров (GPU) и предназначен для повышения производительности и энергоэффективности приложений, работающих с трёхмерной графикой, а также для выполнения вычислительных задач общего назначения (GPGPU). Metal 3 является третьей крупной версией технологии, впервые представленной в 2022 году, и пришла на смену Metal 2.

История

Предпосылки создания

До появления Metal разработчики на платформах Apple использовали OpenGL (Open Graphics Library) и OpenCL (Open Computing Language) — открытые кросс-платформенные стандарты, которые, по мнению Apple, не обеспечивали достаточной производительности и не позволяли эффективно использовать аппаратные возможности GPU. В 2014 году Apple представила первую версию Metal, которая позиционировалась как «близкий к металлу» (low-overhead) API, аналогичный DirectX 12 от Microsoft и Vulkan от Khronos Group.

Версия Metal 2

Metal 2 была анонсирована в 2017 году на конференции Worldwide Developers Conference (WWDC). Она включала поддержку внешних графических процессоров (eGPU), улучшенную отладку и профилирование, а также новые возможности для машинного обучения и виртуальной реальности. Metal 2 стала основой для графической подсистемы macOS High Sierra и iOS 11.

Анонс Metal 3

Metal 3 была представлена 6 июня 2022 года на WWDC 2022. Ключевыми нововведениями стали:

  • MetalFX Upscaling — технология масштабирования изображения с использованием нейросетей, аналогичная NVIDIA DLSS (Deep Learning Super Sampling) и AMD FSR (FidelityFX Super Resolution).
  • Fast Resource Loading — механизм асинхронной загрузки текстур и геометрии, позволяющий снизить задержки при смене уровней и объектов.
  • Поддержка ray tracing — аппаратное ускорение трассировки лучей, доступное на чипах Apple Silicon (M1, M2 и новее).
  • Улучшенная поддержка игр — введение новых инструментов для портирования игр с Windows, включая Metal Shader Converter и Metal Debugger.

Metal 3 стала обязательным компонентом для работы с новыми версиями игровых движков, таких как Unity и Unreal Engine, на платформах Apple.

Архитектура и ключевые особенности

Низкоуровневый доступ к GPU

Metal 3, как и предыдущие версии, предоставляет разработчикам прямой контроль над состоянием GPU, минимизируя накладные расходы драйвера. API использует модель командных буферов (command buffers) и очередей (command queues), что позволяет эффективно планировать выполнение графических и вычислительных задач.

MetalFX Upscaling

MetalFX — это технология, которая позволяет рендерить изображение в более низком разрешении, а затем масштабировать его до целевого с минимальной потерей качества. В Metal 3 реализованы два режима:

  • Spatial Upscaling — пространственное масштабирование, работающее на основе фильтров.
  • Temporal Upscaling — временное масштабирование, использующее информацию из предыдущих кадров для повышения чёткости и снижения артефактов.

Технология поддерживается на всех устройствах с чипами Apple Silicon и графическими процессорами Intel Iris Plus и новее.

Fast Resource Loading

Этот механизм позволяет загружать текстуры, модели и другие ресурсы в память GPU асинхронно, без блокировки основного потока рендеринга. Fast Resource Loading использует отдельные очереди ввода-вывода и оптимизирован для работы с твердотельными накопителями (SSD), что особенно важно для игр с открытым миром и большими уровнями.

Трассировка лучей (Ray Tracing)

Metal 3 вводит поддержку аппаратного ускорения трассировки лучей на чипах Apple Silicon. В отличие от программной реализации, аппаратная трассировка использует специализированные блоки в GPU, что позволяет значительно ускорить расчёты отражений, теней и глобального освещения. API предоставляет функции для построения иерархических структур ускорения (acceleration structures), а также для выполнения запросов на пересечение лучей с геометрией.

Вычислительные шейдеры и машинное обучение

Metal 3 расширяет возможности вычислительных шейдеров (compute shaders), позволяя выполнять на GPU сложные алгоритмы машинного обучения, включая нейронные сети. API поддерживает работу с тензорами, матричные операции и функции активации, что делает его конкурентом таких библиотек, как CUDA и DirectML. Metal Performance Shaders (MPS) — библиотека оптимизированных функций для обработки изображений, свёрточных нейросетей и линейной алгебры.

Применение

Игры

Metal 3 является основным графическим API для игр на платформах Apple. С его помощью были портированы такие крупные проекты, как:

  • Resident Evil Village (Capcom) — одна из первых игр, использующих MetalFX и трассировку лучей на macOS.
  • No Man’s Sky (Hello Games) — порт с поддержкой Metal 3 и MetalFX.
  • The Medium (Bloober Team) — игра, использующая аппаратное ускорение трассировки лучей.

Apple активно стимулирует разработчиков к портированию игр, предоставляя инструменты Metal Shader Converter (для преобразования шейдеров из HLSL в MSL) и Metal Debugger.

Профессиональные приложения

Metal 3 используется в профессиональных пакетах для 3D-моделирования, анимации и видеомонтажа:

  • Blender — поддержка Metal 3 для рендеринга Cycles на GPU.
  • Autodesk Maya — использование Metal для отображения сцены в реальном времени.
  • Final Cut Pro — ускорение обработки видео и эффектов с помощью Metal.
  • DaVinci Resolve — рендеринг и цветокоррекция с использованием GPU.

Научные и инженерные расчёты

Благодаря поддержке GPGPU, Metal 3 применяется в научных вычислениях, симуляциях физических процессов, обработке сигналов и анализе данных. Примеры:

  • TensorFlow — поддержка Metal для обучения нейросетей на Mac.
  • PyTorch — экспериментальная поддержка Metal через MPS backend.
  • MATLAB — использование Metal для параллельных вычислений.

Сравнение с конкурентами

ХарактеристикаMetal 3DirectX 12Vulkan
ПлатформыmacOS, iOS, iPadOS, tvOS, visionOSWindows, XboxWindows, Linux, Android, Nintendo Switch
РазработчикAppleMicrosoftKhronos Group
Трассировка лучейАппаратная (Apple Silicon)Аппаратная (NVIDIA, AMD, Intel)Аппаратная (NVIDIA, AMD)
МасштабированиеMetalFXDLSS, FSR, XeSSFSR, XeSS
Язык шейдеровMetal Shading Language (MSL)HLSLGLSL, SPIR-V
ОткрытостьПроприетарныйПроприетарныйОткрытый стандарт

Metal 3 уступает конкурентам по широте платформенной поддержки, но выигрывает в тесной интеграции с аппаратным обеспечением Apple и оптимизации для конкретных чипов (M1, M2, M3, M4).

Инструменты для разработчиков

Metal Shader Converter

Утилита для преобразования шейдеров, написанных на HLSL (High-Level Shader Language, используемом в DirectX), в MSL. Это упрощает портирование игр и приложений с Windows на macOS.

Metal Debugger

Инструмент, встроенный в Xcode, позволяющий анализировать производительность GPU, выявлять узкие места, отслеживать использование памяти и проверять корректность работы шейдеров.

Metal Performance HUD

Наложение, отображающее в реальном времени частоту кадров (FPS), загрузку GPU, объём используемой видеопамяти и другие метрики. Доступно в настройках Xcode.

Критика и ограничения

Платформенная зависимость

Metal 3 доступен исключительно на устройствах Apple, что ограничивает его применение в кроссплатформенных проектах. Разработчики, желающие поддерживать Windows, Linux и консоли, вынуждены использовать Vulkan или DirectX 12, а для macOS — отдельную версию на Metal.

Закрытость экосистемы

В отличие от Vulkan, Metal является проприетарным API, что означает отсутствие контроля со стороны сообщества и зависимость от решений Apple. Изменения в API происходят только в рамках обновлений операционных систем.

Ограниченная поддержка старых устройств

Metal 3 требует наличия чипов Apple Silicon (M1 и новее) или графических процессоров Intel Iris Plus (для некоторых функций). Устройства на базе Intel HD Graphics и старые модели Mac не поддерживают трассировку лучей и MetalFX.

Сложность портирования

Несмотря на наличие Metal Shader Converter, портирование крупных игр с DirectX 12 на Metal 3 остаётся трудоёмким процессом, требующим адаптации кода под особенности архитектуры Apple Silicon и оптимизации под конкретные модели GPU.

Интересные факты

  • Название «Metal» (металл) отсылает к идее «близости к железу» — минимальной прослойке между приложением и аппаратным обеспечением.
  • Первая игра, использующая Metal 3 с трассировкой лучей, — Resident Evil Village, выпущенная для macOS в 2022 году.
  • Metal 3 поддерживает до 10 000 командных буферов в секунду, что значительно превышает возможности OpenGL.
  • Технология MetalFX Upscaling не требует специальных нейронных процессоров (NPU) и работает на любом GPU, поддерживающем Metal 3.

Источники

  • Документация Apple Developer: Metal 3 Overview
  • WWDC 2022 — Session 101: Discover Metal 3
  • Сравнительный анализ графических API: Metal, Vulkan, DirectX 12
  • Статья «Metal 3: A Deep Dive into Apple’s Graphics API» (журнал «Game Developer», 2023)
  • Официальные пресс-релизы Apple Inc. (2022)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →