Vulkan API — это низкоуровневые кроссплатформенные программные интерфейсы, которые выдают более высокую производительность 3D-графики за счёт снижения издержек по сравнению с другими API типа OpenGL, особенно при наличии специальных функций GPU (API подходит также для рендеринга 2D). При грамотной реализации Vulcan обеспечивает «от маргинального до полиномиального повышения скорости по сравнению с другими API на том же оборудовании».
Разработчик Khronos Group представил Vulkan API в рамках конференции GDC 2015, а первый релиз состоялся в феврале 2016 года. Первоначально Vulkan API носили название «следующее поколение OpenGL» или просто glNext, но потом название сменили на Vulkan.
Многие с нетерпением ждали выхода этой революционной технологии, которая сильно ускоряет 3D-графику и снижает нагрузку на процессор по примеру Direct3D 12, Metal и Mantle. Но проблема была в том, что Vulkan API требует от разработчика гораздо больше усилий, в то время как API более высокого уровня, как OpenGL и DirectX 11 упрощают многие вещи, например, управление памятью. Чтобы помочь работать с Vulkan, компания AMD разработала обёртку (враппер) и слой абстракции V-EZ, а теперь опубликовала исходный код этого инструмента под свободной лицензией MIT (репозиторий на GitHub).
Изначально V-EZ вышел в марте 2018 года с закрытыми исходниками, теперь это ограничение снято.
Vulkan API
V-EZ — это промежуточный уровень (middlware), который берёт на себя многие вспомогательные функции при разработке, так что разработчику необязательно сразу знать и вручную разбираться со всеми тонкостями Vulkan, многие вещи V-EZ сделает сам. Вспомогательная оболочка использует ту же семантику, что и Vulkan API, то есть может использоваться как в своём роде обучающий инструмент. Начав с V-EZ, разработчики могут постепенно освоиться — и в конечном итоге перейти к использованию Vulkan напрямую. Это также означает, что во многих случаях документация Vulkan применима к V-EZ.
Преимущества Vulkan перед API предыдущего поколения:
- Vulkan API хорошо подходит и для высокопроизводительных видеокарт, и для графического оборудования на мобильных устройствах.
- В отличие от Direct3D 12, Vulkan доступен во многих современных операционных системах, не привязан к какой-то ОС или форм-фактору. С самого начала Vulkan API работают на Android, Linux, Tizen, Windows 7, Windows 8 и Windows 10, есть сторонняя поддержка iOS и macOS.
- Уменьшение оверхеда драйверов, снижение нагрузки на CPU.
- Снижение нагрузки на CPU за счёт использования пакетной обработки.
- Лучшее масштабирование для многоядерных процессоров.
- OpenGL использует язык высокого уровня GLSL для написания шейдеров, что заставляет каждый драйвер OpenGL реализовать свой собственный компилятор для GLSL, который выполняется в рантайме для трансляции шейдеров программы в машинный код GPU. Вместо этого драйверы Vulkan должны принимать шейдеры, уже переведенные в промежуточный двоичный формат SPIR-V, аналогичный двоичному формату, в который скомпилированы шейдеры HLSL в Direct3D.
- Благодаря предварительной компиляции шейдеров повышается скорость инициализации приложений, а для каждой сцены можно использовать большее количество шейдеров. Драйверу требуется только определённая оптимизация GPU и генерация кода, что упрощает обслуживание драйверов и уменьшает их размер.
- Унифицированное управление вычислительными ядрами и графическими шейдерами, исключающее необходимость использования отдельного вычислительного API в сочетании с графическим API.
Промежуточный слой V-EZ
Хотя создателем Vulkan API является Khronos Group, но технология основана на Mantle API, которую компания AMD безвозмездно передала Khronos Group. Идея была в создании более совершенной технологии, не привязанной к конкретному производителю, чтобы её можно было принять в качестве общепризнанного отраслевого стандарта, как OpenGL. Поэтому AMD сейчас помогает в продвижении Vulkan API и создаёт вспомогательные инструменты, такие как V-EZ.
Требования для установки V-EZ
- 64-битная Windows 7, 8.1, 10
- 64-битный Linux (проверено на Fedora и Ubuntu)
- Visual Studio 2015 или более поздняя версия
- GCC 4.9 или более поздняя версия
- CMake 3.8 или более поздняя версия
- LunarG Vulkan SDK 1.1.70
V-EZ не привязана к определённому вендору и должна работать на оборудовании не-AMD.
Создатели V-EZ надеются, что публикация исходного кода под свободной лицензией способствует большей популярности оболочки V-EZ, а, следовательно, и новых низкоуровневых программных интерфейсов. В свою очередь, это поможет разработчикам принять новые API, что приведёт к лучшей производительности игр и большему количеству кроссплатформенных игр.
В данный момент Vulkan поддерживается рядом игровых движков, в том числе Source 2, Serious Engine 4, Unreal Engine 4, Torque 3D, id Tech 3, id Tech 4, id Tech 6, Xenko, Unity, CryEngine, Intrinsic, Unigine, Abyss Engine, Banshee 3D и Godot.
Автор: alizar