AMD открыла исходный код V-EZ, оболочки кроссплатформенного низкоуровневого Vulkan API

    Vulkan API — это низкоуровневые кроссплатформенные программные интерфейсы, которые выдают более высокую производительность 3D-графики за счёт снижения издержек по сравнению с другими API типа OpenGL, особенно при наличии специальных функций GPU (API подходит также для рендеринга 2D). При грамотной реализации Vulkan обеспечивает «от маргинального до полиномиального повышения скорости по сравнению с другими 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.
    • +11
    • 4,7k
    • 4
    Поделиться публикацией
    Комментарии 4
      –3
      Т.е мы сначала сделаем низкоуровневую поделку, чтобы заменить высокоуровневые, а потом навесим на неё еще и высокоуровневых абстракций? А в чем логика? Ну за исключением последующего перехода на сам вулкан. Хотя не помню случев чтобы люди добровольно начинали писать на сложном там где можно схалявить.
        +1
        Вот вам высокоуровневые абстракции и всё

        vs

        Вот вам доступ на низкий уровень, но если вы пока не чувствуете себя готовыми, вот вам опционально высокоуровневые абстракции

        Логика в том, чтобы дать выбор, которого раньше не было.
          0
          Писать 1К строк кода, чтобы настроить графический пайплайн и увидеть «hello world треугольник»? Нет, спасибо. Дайте мне возможность задать всё по умолчанию, я подправлю всё потом — с V-EZ.
          0
          Vulkan на win7 точно ставил (не был он доступен по умолчанию), прирост фпс в «DooM» (который 2016 года) был довольно ощутимый на Ultra'х 20-30%, графика всё же местами отличалась, не могу сказать, что она была хуже, но отличия точно есть.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое