Vulkan API под macOS: MoltenVK транслирует в Metal
Открытые стандарты и API позволяют разрабатывать программные продукты под множество платформ. От этого выигрывают и разработчики, и пользователи. Долгое время Apple поддерживала графический интерфейс OpenGL ES, но несколько лет назад разработала собственный низкоуровневый API под названием Metal.
Конечно, подобный специализированный API позволяет в полной мере задействовать доступные ресурсы благодаря глубокой оптимизации под аппаратную платформу, но разработчикам под другие системы приходится разрабатывать игру еще и под Metal. Vulkan API — тоже универсальный графический интерфейс, но ранее под macOS он не работал. Khronos Group, консорциум, отвечающий за разработку OpenGL и Vulkan, анонсировал SDK, позволяющий использовать Vulkan под macOS.
Изначально коммерческий продукт под названием MoltenVK благодаря влиянию со стороны Valve, LunarGu и The Brenwill Workshop перешел на модель открытым исходным кодом, он позволяет интерпретировать вызовы Vulkan API в команды Metal 1 или Metal 2 под macOS. Первой будет портирована игра DOTA 2 от Valve, она станет примером игры Vulkan под macOS.
Также разработчики планируют интерпретировать вызовы Vulkan под DirectX 12. В результате игры на Vulkan будут совместимы со всеми платформами. Вместе с тем низкоуровневые API опираются на минимальное число уровней интерпретации. И MoltenVK является как раз таким уровнем, пусть и обещает значительную эффективность.
Valve утверждает, что MoltenVK достиг финального уровня. Что как раз призваны продемонстрировать DOTA 2 и тесты. Но все же чтобы раскрыть весь потенциал необходимо провести дальнейшие оптимизации. По сравнению с OpenGL версия Vulkan с интерпретатором работает на 50% быстрее.
MoltenVK 1.0 уже доступен на странице GitHub (Khronos MoltenVK GitHub). Также бесплатный macOS SDK можно скачать с сайта LunarXchange.
Разработчики теперь могут создавать игры для macOS и iOS на графическом API Vulkan
Открытый графический API Vulkan от Khronos Group, разработчика OpenGL, доступен на Windows, Linux, Android, Nintendo Switch и различных облачных системах, но его не поддерживает ни одна платформа Apple. macOS работает со старым и медленным графическим интерфейсом OpenGL, а iOS — с его подвидом для встраиваемых систем OpenGL ES. Apple не интересен Vulkan — вместо него она продвигает собственный API Metal.
Теперь этот недочёт устранён — состоялся релиз портативного инструмента MoltenVK для macOS и iOS, который представляет собой практически полноценный Vulkan на базе Metal. MoltenVK распространяется по лицензии Apache 2 и позволяет разработчикам создавать Vulkan-приложения для платформ купертинского гиганта.
Valve одной из первых начала экспериментировать с MoltenVK. Компания некоторое время тестировала созданную на его базе версию Dota 2 для macOS, и тесты эти многообещающие: игра работает примерно на 50 % быстрее, чем вариант на OpenGL.
MoltenVK — продукт, созданный по многочисленным просьбам разработчиков. Им нужен был кроссплатформенный API, который позволил бы создавать игры для различных операционных систем, в том числе платформ Apple. Однако они не хотели изучать очередной API, а надеялись, что Khronos Group сможет адаптировать под их нужды ряд существующих интерфейсов. Результатом стал портативный подвид Vulkan, который можно без проблем запускать поверх других графических API.
MoltenVK намеренно создавался таким образом, чтобы разработчикам не пришлось выполнять каких-либо трудоёмких задач по адаптации своих продуктов под него, а также чтобы его производительность была предсказуемой и стабильной. Из-за этого ряд функций Vulkan разработчикам не доступен, но в целом релиз стабилен.
Открытый API Vulkan для графических процессоров теперь доступен для macOS и iOS
Открытый кроссплатформенный API для работы с графикой Vulkan, ранее доступный для Windows, Linux, Android, Nintendo Switch и облачных систем, теперь открывается и для мира устройств Apple.
«Тонкая прослойка»
Как сообщает издание ARSTechnica, «яблочная» компания долгое время сопротивлялась каким-либо новшествам в программном обеспечении для графических процессоров. Однако, в конце концов, Apple пришла к собственной разработке — API Metal. По многочисленным просьбам разработчиков, не желавших учить очередной стандарт, была создана специальная надстройка над Metal — MoltenVK, подарившая проприетарному решению большую часть возможностей привычного Vulkan.
Все достоинства API Vulkan в MoltenVK не отражены, однако, по словам разработчиков, она является достойной портативной версией инструмента, вполне охватывающей все основные программные нужды.
Первые последователи
Одними из первых новый интерфейс применили разработчики из Valve. Они тестировали API на macOS-версии игры Dota 2, и результаты оказались впечатляющими. Частота кадров с MoltenVK почти вдвое превысила этот же показатель у сборки на OpenGL.
API MoltenVK распространяется под лицензией Apache 2. Все желающие могут изучить новый инструмент бесплатно в пробной версии.
Хинт для программистов: если зарегистрируетесь на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.
Перейти к регистрации
Vulcan api mac os
A Vulkan-compatible driver for macOS and iOS, MoltenVK, is now available free of charge and open-source. Having invested into its development for more than a year, we have sponsored The Brenwill Workshop to donate MoltenVK for inclusion in the Vulkan graphics ecosystem. We’ve also continued our efforts with LunarG who is today releasing a corresponding update to deliver macOS support to the Vulkan SDK. Also as a result of that work, Dota 2 will be updated in the comings months to target Vulkan on macOS.
It’s been almost four years since we started contributing to Vulkan’s goal of becoming a cross platform solution. With support for Windows, Linux, and Android crossed off the list, this latest set of updates checks off one of the largest remaining targets, giving developers an easy yet robust way to also target their Vulkan-based engines and titles to run on macOS and iOS. By making the code to MoltenVK freely available and open-source, the goal is to enable developers to bring their games to macOS and iOS with minimal evelopment cost.
The LunarG Vulkan SDK is a key component for developers targeting Vulkan by providing tools such as validation layers, shader compilers, and a loader. Now available from LunarG, an updated Vulkan SDK now offers those same tools to developers targeting macOS, enabling them to efficiently develop Vulkan code on the platform.
Additionally, we exercised MoltenVK with real world workloads including Dota 2 and we’re seeing significant performance improvements over running on OpenGL.
We encourage developers to test their engines and titles with MoltenVK and the LunarG SDK and provide feedback. We are committed to making Vulkan a viable option for developers targeting all platforms.
Что такое Vulkan и DirectX и как они влияют на видеоигры
Большинство из нас, геймеров, слышали о Microsoft DirectX. Однако, немногие из нас знакомы с его утилитами и как они влияют на видеоигры. В настоящее время, фактически, приобретя конкурента в форме Vulkan, вещи относящиеся к двум API, как правило, становятся еще более сложными. В этом руководстве мы увидим, что такое API, Vulkan и DirectX, и мы покажим метод, с помощью которого они влияют на наши игры.
Предварительная информация о API
Прежде чем мы начнем говорить о DirectX и Vulkan, нам нужно сначала понять, что такое API. Аббревиатура означает «Интерфейс прикладного программирования».
Интерфейс предназначен для обеспечения связи между двумя объектами. Одним из примеров является графический интерфейс Windows, который играет роль посредника между операционной системой и пользователем.
Интерфейс обеспечивает удобную среду. С помощью этой среды мы используем операционную систему, не зная, как ее функции реализованы в фоновом режиме. Интерфейс прикладного программирования (API) заполняет роль посредника. Однако на этот раз пользователь может быть ПК или другой программой и не обязательно человеком. API-интерфейсы гораздо более распространены, чем можно было бы подумать, предлагая программистам необходимые инструменты для создания своего программного обеспечения.
Ориентировочный пример, в котором мы используем API, – это когда мы автоматически регистрируемся в новом социальном средстве или онлайн-сервисе, используя наши ранее существующие учетные записи из Facebook или Google (вместо создания новой учетной записи вручную).
В таких случаях веб-сайт использует API, через который он связывается с конкретной услугой (например, Facebook или Twitter), чтобы собирать нашу личную информацию (имя (имена), адрес электронной почты, контактные номера и т. д.) Для создания нашего нового аккаунта.
Тем не менее существует множество других применений API для всех видов взаимодействия между приложениями и компьютерами, такими как системы баз данных, операционные системы и библиотеки программного обеспечения.
В таких случаях использование API-интерфейсов применимо к нашему компьютерному оборудованию и в частности, к нашей графической карте (видеокартам).
DirectX и Vulkan фактически улучшают связь между приложением (игрой) и графическим процессором, чтобы повысить производительность графики.
Microsoft DirectX
С выпуском Windows 95 и модели защищенной памяти разработчики не имели такого же доступа к ресурсам, как в MS-DOS. DirectX впервые появился в виде набора конкретных API для разработки мультимедийных приложений, таких как игры.
Термин «DirectX» начинается со слова «Direct», ссылаясь на прямой доступ к ресурсам системы. Некоторые примеры включают Direct3D для графики и DirectSound для аудио. Часть «Х» относится к API в общей коллекции; таким образом объединив все API-интерфейсы под названием DirectX. Вышеупомянутое название также вдохновило название популярной видеоигр компании Xbox.
Вышеприведенное иллюстрирует тесную связь между DirectX и консолью Microsoft. Его последняя версия, DirectX 12, имеет большие улучшения. Тем не менее он поддерживается только Windows 10 и новейшей игровой консолью компании Xbox One.
Direct3D является жемчужиной DirectX и полезен для создания 3D-объектов на нашем экране. Он также позволяет просматривать игры в полноэкранном режиме, а также использовать аппаратные ускорители. Последний метод позволяет реализовать некоторые функции более эффективно, чем они работают в программном обеспечении. Это может быть достигнуто за счет более эффективного использования аппаратного обеспечения нашего компьютера. В этом случае это будет наша видеокарта.
Вулкан AMD
В 2015 году Kronos Group разработала свой собственный API. Vulkan – это низкоуровневый API, используемый для разработки графически требующих приложений. Его первая стабильная версия дебютировала в августе 2016 года.
Следует четко указать, что «низкий уровень» не относится к качеству. Вместо этого этот термин описывает способность Вулкана работать на аппаратном уровне.
Хронос окружает себя одними из самых больших имен в ИТ-индустрии. Некоторые из них – Google, Intel, Sony, Nvidia и AMD. Последние два дали API, свести к минимуму время разработки Vulkan.
OpenGL – популярный API среди графических дизайнеров. Фактически он был разработан Хроносом, и он также включает в себя многие характеристики Вулкана. Однако его прием игровыми дизайнерами был непредвиденным.
Одним из самых сильных активов Vulkan является тот факт, что он с открытым исходным кодом. Кроме того, совместимость Vulkan с несколькими платформами вместе с общей производительностью – это два дополнительных актива, которые делают его более прибыльным, чем DirectX.
Здесь вы можете найти полный список с именами, которые содержат Khronos. Мантия обеспечила основную базу, на которой был разработан Вулкан. Наконец Vulkan в настоящее время находится в версии 1.1.
Как они влияют на игры
До этого момента мы рассмотрели некоторые основы, касающиеся API, Microsoft и Khronos. Но как они влияют на игры?
Эти два API значительно улучшили производительность. До сих пор DirectX, по-видимому, обеспечивал лучшую производительность, чем Vulcan, что на самом деле он не так далеко позади.
Microsoft утверждает, что DirectX 12 снижает потребление на 50% при использовании DirectX 11. С другой стороны, Vulkan также демонстрирует лучшую гибкость, чем его предшественник. Говоря о предшественниках, DirectX 11 и OpenGL были созданы с учетом одноядерных процессоров; что означает, что они не были точно настроены с использованием новых, многоядерных процессоров.
В результате одно ядро управляет большинством различных процессов, в то время как остальные работают с низкой скоростью, а иногда и вовсе отключены. Оба API (DirectX 12 и Vulkan) поддерживают процессоры с несколькими ядрами и потоками, чтобы максимально эффективно использовать свои возможности. Более того, они передают большую часть требуемых задач от процессора к графической карте (видеокартам), предлагая более сбалансированный опыт.
Взаимодействие между этими двумя элементами может существенно повлиять на будущие сборки ПК. Графические карты в значительной степени важнее, чем процессоры, когда дело доходит до игр. С дальнейшим развитием игровых API маловероятно, что процессоры могут стать еще менее важными, когда дело доходит до него. Таким образом, даже с простым процессором мы можем получить хорошую производительность без каких-либо узких мест.
Поддержка нескольких графических карт
Здесь Khronos Group столкнулась со значительным разрывом между двумя API-интерфейсами с поддержкой использования нескольких графических карт (использование явного многоканального GPU). Мы можем использовать разные карты, если их чипы имеют аналогичную архитектуру и используют один и тот же драйвер. Это позволит различным картам обрабатывать другую часть экрана.
Microsoft здесь еще на один шаг впереди, позволяя использовать несколько графических карт даже у другого производителя, что часто бывает, поскольку большинство систем имеют независимый и интегрированный графический процессор. Важно подчеркнуть тот факт, что эти реализации отличаются от возможностей SLI и Crossfire от Nvidia и AMD, которые реализованы с помощью драйверов, и в частности, в случае SLI требуют идентичные графические карты.
Шейдеры
Шейдеры – это небольшие программы, которые запускаются на наших видеокартах. Они отвечают за определенные функции различных объектов в 3D-среде. Тени, туман и освещение в игре являются результатом шейдера.
Vulkan использует промежуточное представление для шейдеров под названием SPIR-V. Его двоичная форма похожа на байт-код DirectX DX.
SPIR-V версия 1.3 отличается SPIR-V opt, инструментом для уменьшения размера шейдеров. Максимальный размер достигает + 40% от байт-кода DX соответствующего представления для DirectX.
Кроме того, некоторые структуры в HLSL (высокоуровневый шейдерный язык), которые были разработаны Microsoft, не поддерживались непосредственно некоторыми видеокартами.
HLSL широко используется DirectX с версии 9. Он использовался в качестве дополнения к существующему языку ассемблера шейдеров. С новой версией SPIR-V Vulkan также поддерживает ее.
Таким образом, разработчики смогут использовать существующий код для своих шейдеров, и им не нужно будет изобретать колесо. Следовательно, игры будут легко перенесены с одной платформы на другую.
Совместимость с несколькими платформами
Что касается платформ, большое преимущество Vulkan заключается в том, что он поддерживает Windows, Linux, Mac OS, Android и iOS. DirectX 12 с другой стороны, поддерживается только в Windows 10 и Xbox One. Чтобы использовать усовершенствования, предлагаемые DirectX 12, нам нужно либо обновить нашу операционную систему до Windows 10, либо получить новую консоль компании.
Если вы хотите попробовать DirectX 12, и вам не удалось получить Windows 10 во время бесплатного обновления, ознакомьтесь с нашим пошаговым руководством по свободным методам модернизации, которые доступны:
Возвращаясь к предыдущей теме, игровой порт, поддерживаемый API Vulkan, будет значительно проще по сравнению с портом, поддерживаемым DirectX.
С одной стороны, мы можем иметь названия на нескольких платформах, а с другой разные операционные системы имеют возможность размещать наши игры. Одна из причин, почему Linux не так популярен, как Windows, связана с тем, что последняя отличается от игр.
Распределение Linux может быть лучшим выбором для размещения наших игр, поскольку он может быть скорректирован для этой цели. Например Steam OS – это специализированная операционная система, предназначенная исключительно для игр.
Также подумайте: компания думает о создании программного обеспечения для разработки игр и хочет поддерживать API. Кто бы вы выбрали?
Оба имеют схожие мощности оба лучшие, чем их предшественники, и оба обеспечивают явное использование видеокарт. Vulkan поддерживает все платформы, включая Windows 10 и Xbox One, в то время как DirectX поддерживает только последние две.
Виртуальная реальность
Необходимо сказать, что Vulkan является примером больших улучшений в области виртуальной реальности. Приложение VR должно отображать определенную 3D-сцену с двух разных точек зрения – по одному для каждого глаза.
До этого момента вышесказанное было возможно, отправив все необходимые команды на нашу графическую карту, чтобы сформировать трехмерное изображение для одной перспективы. Подход такой же для перспективы нашего второго глаза.
Версия 1.1 Vulkan предлагает набор команд рендеринга для формирования нескольких, немного разных выходов (изображений), которые в конечном итоге дают лучшую производительность в приложениях VR.
Развитие и будущее
Было бы упущением, не говоря уже о ходе разработки двух API. С одной стороны, у нас есть ветеран DirectX с более чем 20-летним развитием. С другой стороны, Вулкану едва будет 3 года с 2015 года. Тот факт, что Vulkan является открытым исходным кодом, может немного повлиять на его темпы роста. Конечно игроки Khronos, похоже серьезно относятся к разработке API, так как уровни улучшения впечатляют.
Все мы можем создавать новые инструменты и модификации и предоставлять их сообществу, помогая API расти быстрее. Наконец следует упомянуть, что DirectX не имеет вышеуказанной функции. Несмотря на свои годы развития, около 40 игр в настоящее время используют Vulkan, занимая большую часть рынка. Некоторые из них – Quake, Roblox, Talos и Dota 2. Что касается производительности, Vulkan приближается к DirectX, и в некоторых случаях он превосходит его. Самые захватывающие примеры работы Вулкана – игра Doom.
Vulkan расширил свою поддержку названий AAA, таких как Wolfenstein II, не пренебрегая названиями VR, такими как Doom VFR и Serious Sam VR. Здесь вы можете увидеть подробный список поддерживаемых игр. Хотя здесь вы найдете игры с поддержкой DirectX 12.
Оба API значительно улучшили производительность. Лучшее использование нескольких графических карт и меньшее использование ЦП повысит общую производительность наших систем. По слухам, новые видеокарты от Nvidia будут выпущены к концу лета и значительно превзойдут сегодняшние высокопроизводительные графические карты. В целом, общее состояние вещей кажется довольно гибким. В любом случае, изменения в разработке игр скоро будут у нас, и оба API несомненно будут играть важную роль.
Как вы относитесь к двум API?
Вы уже узнали всю информацию, которую мы предоставили на Vulkan и DirectX? Со временем их соперничество усиливается, какой из двух API вы считаете более полезным для развития игры? Мы с нетерпением ждем ваших комментариев.