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 3 | DirectX 12 | Vulkan |
|---|---|---|---|
| Платформы | macOS, iOS, iPadOS, tvOS, visionOS | Windows, Xbox | Windows, Linux, Android, Nintendo Switch |
| Разработчик | Apple | Microsoft | Khronos Group |
| Трассировка лучей | Аппаратная (Apple Silicon) | Аппаратная (NVIDIA, AMD, Intel) | Аппаратная (NVIDIA, AMD) |
| Масштабирование | MetalFX | DLSS, FSR, XeSS | FSR, XeSS |
| Язык шейдеров | Metal Shading Language (MSL) | HLSL | GLSL, 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 →