Vulkan

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Vulkan (API)»)
Перейти к навигации Перейти к поиску
Vulkan
Логотип программы Vulkan
Скриншот программы Vulkan
Тип API
Автор Khronos Group
Разработчик Khronos Group
Написана на C
Операционные системы
Первый выпуск 16 февраля 2016 г.
Аппаратная платформа кроссплатформенность
Последняя версия 1.3.282 (14 апреля 2024)
Репозиторий github.com/KhronosGroup/…
Состояние Актуальное
Лицензия Лицензия Apache
Сайт khronos.org/vulkan/
Логотип Викисклада Медиафайлы на Викискладе

Vulkan (рус. Вулкан) — кроссплатформенный API для 2D- и 3D-графики, впервые представленный Khronos Group в рамках конференции GDC 2015[11][12].

Vulkan API изначально был известен как «новое поколение OpenGL» или просто «glNext», но после анонса компания отказалась от этих названий в пользу названия Vulkan[13]. Как и OpenGL, Vulkan позволяет с высокой производительностью отображать в реальном времени различные приложения с 3D-графикой, такие как игры или интерактивные книги на всех платформах, а также обеспечивает более высокую производительность и меньшую нагрузку на процессор, аналогично Direct3D 12, Metal[en] и Mantle. Vulkan основан на технологиях AMD в Mantle[14][15][16][17][18].

Обзор[править | править код]

Целью Vulkan было превзойти другие API, включая его предшественника OpenGL, в части снижения накладных расходов, повышения степени прямого контроля над GPU и уменьшения нагрузки на CPU. Vulkan имеет предполагаемые преимущества:

  • OpenGL использует язык высокого уровня для написания шейдеров GLSL. Это вынуждает каждого производителя OpenGL-драйвера реализовывать свой собственный компилятор для GLSL, который работает во время выполнения графического приложения, компилируя шейдерные программы в исполняемый код целевой платформы. Vulkan вместо этого предлагает промежуточный двоичный формат SPIR-V[en], аналогичный двоичному формату, в который компилируются HLSL-шейдеры на платформе Direct3D. Это снимает бремя с поставщиков драйверов, позволяя компилировать шейдеры на этапе разработки. Также позволяет разработчикам приложений писать шейдеры на других языках, кроме GLSL.
  • Кроссплатформенный API поддерживается на мобильных устройствах и высокопроизводительных видеокартах.
  • Улучшенная поддержка современных систем, использующих многопоточность.
  • Снижение нагрузки на центральный процессор в ситуациях, когда он является недостаточно производительным, что позволяет достичь более высокой пропускной способности для GPU-вычислений и визуализации.
  • Серьёзным преимуществом Vulkan перед Direct3D 12 когда-то была возможность запускать современные 3D-игры не только в среде Windows 10, но и на компьютерах под управлением ОС Windows 7 и Windows 8.1[19][20].

Для упрощения разработки приложений на Vulkan в 2018 году AMD выпустила вспомогательную оболочку V-EZ, которая берёт на себя многие вспомогательные функции при разработке, так что разработчику необязательно сразу разбираться со всеми тонкостями работы Vulkan API[21][22].

История[править | править код]

Летом 2014 года Khronos Group начала проект по созданию следующего поколения графического API. В 2014 году на SIGGRAPH проект был публично анонсирован с призывом к участию.

Согласно ведомству США по патентам и товарным знакам, фирменный знак «Vulkan» был зарегистрирован 19 февраля 2015 года[23].

Vulkan был официально назван и анонсирован на Game Developers Conference 2015, хотя домыслы и слухи вокруг нового API существовали заранее. Один из вариантов названий был «glNext»[24].

3 марта 2015 года Valve анонсировала Source 2, игровой движок с поддержкой графического API Vulkan[25][26].

В начале 2015 года LunarG (финансируется Valve) разработан и представлен драйвер Linux для Intel, который позволил Vulkan иметь совместимость с интегрированной графической системой HD 4000 серии, которая, несмотря на открытый драйвер Mesa, не полностью совместима с OpenGL 4.0[27][28]. Существует ещё возможность[29] поддержки Ivy Bridge, так как он поддерживает Direct3D 11.

10 августа 2015 года Google объявила о будущей версии Android с поддержкой Vulkan[30].

18 декабря 2015 года Khronos Group объявила о том, что спецификация версии Vulkan 1.0 практически завершена и будет выпущена, когда будут доступны совместимые драйверы.

16 февраля 2016 года выпущена публичная спецификация версии Vulkan 1.0[31] и экспериментальные драйверы для видеокарт AMD и Nvidia.

26 февраля 2018 года Khronos в рамках спецификации The Vulkan® Portability Initiative выпустили общедоступную версию Vulkan 1.0 SDK для работы на платформах macOS и iOS[32].

7 марта 2018 года выпущена публичная спецификация версии Vulkan 1.1[33].

15 января 2020 года выпущена публичная спецификация версии Vulkan 1.2[34].

15 января 2020 года Khronos Group объявила что HLSL-компилятор от Microsoft теперь поддерживает трансляцию в SPIR-V[en]. Теперь HLSL наряду с GLSL официально является языком программирования шейдеров для Vulkan[35].

17 марта 2020 года была добавлена поддержка трассировки лучей[36].

22 января 2022 года выпущена публичная спецификация версии Vulkan 1.3[37].

1 сентября 2022 выпущено расширение VK_EXT_mesh_shader[38] для поддержки меш шейдеров[39].

Использование Vulkan[править | править код]

Игры[править | править код]

  • The Talos Principle — первая игра от хорватской компании Croteam, использующая данную технологию на практике.[40]
  • Dota 2 — 23 марта 2016 года была добавлена экспериментальная поддержка Vulkan и попала в релиз в мае 2016.[41]
  • Doom — 11 июля 2016 года Id Software выпустили патч для игры Doom (2016), в котором отрисовка графики и расчёт физических взаимодействий были переделаны с OpenGL на Vulkan.[42][43][44]
  • Doom Eternal — изначально использует API Vulkan.
  • Rage 2 — изначально использует API Vulkan.
  • vkQuake — порт игры Quake на Vulkan выпущен в июле 2016.[45][46]
    • Официальне переиздание Quake, вышедшее 19 августа 2021 года, использует Vulkan по умолчанию.
  • Need for Speed: No Limits, Vainglory и Heroes of Incredible Tales — в июне 2016 года Samsung объявила о поддержке портирования игр с OpenGL ES на Vulkan для смартфона Samsung Galaxy S7.[47]
  • Mad Max (игра, 2015) — 30 марта 2017 года в бета-тест вышла версия игры для Linux, использующая Vulkan.
  • Olympus Rising — Поддержка добавлена 20 августа 2016.
  • Rust — Поддержка добавлена 13 января 2017.
  • Destinations — Поддержка добавлена 22 февраля 2017.
  • Wolfenstein II: The New Colossus — Поддержка добавлена 27 октября 2017.[48]
  • Escape from Tarkov — объявлено добавление поддержки в будущем.[49]
  • X4 Foundations — объявлена поддержка Vulkan.[50]
  • Star Citizen — объявлена поддержка Vulkan.[51]
  • No Man's Sky — поддержка добавлена в патче 1.77.
  • World War Z — изначально использует API Vulkan.
  • Red Dead Redemption 2 — изначально использует API Vulkan. Игра поддерживает два API — Vulkan и DirectX 12, но согласно отзывам игроков и обзорам, производительность при использовании Vulkan выше[52].
  • Detroit: Become Human изначально использует API Vulkan.
  • Tom Clancy’s Rainbow Six Siege и Tom Clancy’s Ghost Recon Breakpoint 28 января 2020 года была добавлена экспериментальная поддержка API Vulkan
  • X-Plane 11 — 3 апреля 2020 года, студия-разработчик игры-авиасимулятора выпустила обновление 11.50, которое включает в себя API Vulkan.
  • Path of Exile — 28 мая 2020 года было выпущено обновление 3.10.2 с поддержкой бета-версии отрисовщика на базе Vulkan.[53]
  • Baldur's Gate III — изначально использует API Vulkan. Игра поддерживает два API — Vulkan и DirectX 11.
  • War Thunder — поддержка Vulkan была дополнительной к OpenGL, в настоящее время Vulkan по умолчанию используется как минимум в версии клиента для Linux.
  • PUBG: New State — мобильная игра с поддержкой графического интерфейса Vulkan и OpenGL ES при выходе (04.11.2021)
  • Brawl Stars — Мобильная кроссплатформенная игра. Поддержка была добавлена 16 Декабря 2021 года. Ранее игра поддерживала OpenGL.

Игровые движки[править | править код]

  • Source 2 — В марте 2015, Valve Corporation анонсировала Source 2, который получил поддержку Vulkan.
  • Serious Engine 4 — В феврале 2016, Croteam объявила о поддержке Vulkan в Serious Engine.
  • Unreal Engine 4 — В феврале 2016, Epic Games анонсировала Unreal Engine 4 с поддержкой Vulkan.
  • Unreal Engine 5 — Поскольку движок — продолжение Unreal Engine 4, в нём уже был Vulkan изначально.
  • Torque 3D[en] — В апреле 2016, разработчики объявили что добавили поддержку Vulkan.
  • Quake Engine — В июне 2016 была добавлена поддержка Vulkan.
  • id Tech 3 — В мае 2017 была добавлена поддержка Vulkan.
  • id Tech 4 — В августе 2017 была добавлена поддержка Vulkan.
  • id Tech 6 — В мае 2016 id Software объявили что Doom на движке id Tech 6 будет поддерживать Vulkan.
  • id Tech 7 — В июне 2018 id Software анонсировали движок id Tech 7 который работает исключительно на Vulkan.
  • Xenko — В июле 2016, была добавлена поддержка Vulkan.
  • Unity — Поддержка Vulkan появилась в версии 5.6.
  • CryEngine — Поддержка Vulkan появилась в версии 5.4.
  • Intrinsic — бесплатный кросс-платформенный игровой движок с открытым исходным кодом, который поддерживает Vulkan.
  • Unigine — В апреле 2017, Unigine Corp анонсировала поддержку Vulkan для своего движка Unigine.
  • Abyss Engine — В мае 2017, Deep Silver выпустила Galaxy on Fire 3 Manticore на Android с поддержкой Vulkan.
  • Banshee 3D — бесплатный кросс-платформенный игровой движок с открытым исходным кодом, который поддерживает Vulkan.
  • Godot Engine — Была добавлена поддержка в версии 4.0.[54]
  • Turbo Engine (Leadwerks 5.0) — платный движок, от Leadwerks Technologies.

Библиотеки обёртки[править | править код]

  • Anvil — сокращает время на написание рабочего приложения Vulkan с нуля. Часть проекта GPUOpen[en][55].
  • GLOVE — «OpenGL ES Over Vulkan», действует как промежуточный слой между OpenGL ES и Vulkan[56].
  • MoltenVK — позволяет приложениям Vulkan работать поверх Metal[en] в операционных системах macOS и iOS от Apple[57].
  • V-EZ — «Лёгкий режим» для Vulkan, предназначен для упрощения сложности использования Vulkan. Часть проекта GPUOpen[58].
  • Vulkan-Hpp — обёртка для языка программирования C++[59].
  • Vulkano — обёртка для языка программирования Rust[60].
  • PasVulkan — обёртка для языка программирования Object Pascal[61].
  • NVK — Vulkan API для Node.js, позволяет писать приложений на языках программирования JavaScript и TypeScript[62].
  • DXVK — обертка для использования DirectX 9-11 игр и приложений под Vulkan без необходимости их переписывать
  • nGlide — обертка для использования Glide игр и приложений под Vulkan без необходимости их переписывать.
  • D9VK — обертка для использования DirectX 9 игр и приложений под Vulkan без необходимости их переписывать.
  • D8VK — обертка для использования DirectX 8 игр и приложений под Vulkan без необходимости их переписывать.

Совместимость[править | править код]

Начальная спецификация утверждает, что Vulkan будет работать на оборудовании, которое в настоящее время поддерживает OpenGL ES 3.1 или OpenGL 4.x и выше[63]. В качестве поддержки Vulkan потребует новых графических драйверов, но это не обязательно означает, что все существующие устройства, которые поддерживают OpenGL ES 3.1 или OpenGL 4.x будут иметь доступные драйверы с поддержкой Vulkan.

См. также[править | править код]

Примечания[править | править код]

  1. Vulkan on FreeBSD. Vulkan GPU info (1 июня 2021). Дата обращения: 22 мая 2022. Архивировано 14 марта 2022 года.
  2. Vulkan on QNX. www.khronos.org (14 июля 2021). Дата обращения: 14 июля 2021. Архивировано 14 июля 2021 года.
  3. Nintendo Switch Listed as Vulkan and OpenGL Conformant - My Nintendo News. My Nintendo News. Excite Global Media (19 декабря 2016). Дата обращения: 14 июля 2021. Архивировано 14 июля 2021 года.
  4. Palumbo, Alessio Nintendo Switch Officially Supports Vulkan, OpenGL 4.5 & OpenGL ES. WCCF Tech (19 декабря 2016). Дата обращения: 14 июля 2021. Архивировано 14 июля 2021 года.
  5. Conformant Products. khronos.org. The Khronos Group (28 апреля 2018). Дата обращения: 28 февраля 2018. Архивировано 28 января 2017 года.
  6. Vulkan on Raspberry Pi. www.raspberrypi.org (14 июля 2021). Дата обращения: 14 июля 2021. Архивировано 20 июля 2021 года.
  7. Vulkan now official, with 1.0 API release and AMD driver [Updated]. Ars Technica. Condé Nast (16 февраля 2016). Дата обращения: 18 февраля 2016. Архивировано 14 июля 2021 года.
  8. Valich, Theo Mantle Cycle is Complete as Khronos Releases Vulkan 1.0. VR World (17 февраля 2016). Дата обращения: 19 февраля 2016. Архивировано 11 мая 2022 года.
  9. GitHub - KhronosGroup/MoltenVK: MoltenVK is an implementation of the high-performance, industry-standard Vulkan graphics and compute API, that runs on Apple's Metal graphics framework, bringing Vulkan to iOS and macOS. Дата обращения: 12 сентября 2019. Архивировано 19 июля 2021 года.
  10. VxWorks offers support for many standard graphic libraries, such as ..., and Vulkan. WinDriver. Дата обращения: 8 ноября 2021. Архивировано 8 ноября 2021 года.
  11. Vulkan : Graphics and compute Belong Together (PDF). Khronos.org (март 2015). Дата обращения: 5 марта 2015. Архивировано 18 декабря 2016 года.
  12. Vulkan - Graphics and compute belong together. Khronos.org. Дата обращения: 5 марта 2015. Архивировано 9 мая 2021 года.
  13. glNext revealed as Vulkan graphics API. Дата обращения: 27 марта 2015. Архивировано 14 октября 2016 года.
  14. Mantle is a Vulkan: AMD’s dead graphics API rises from the ashes in OpenGL’s successor | PCWorld. Дата обращения: 27 марта 2015. Архивировано 7 ноября 2016 года.
  15. AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs. Community.amd.com. Дата обращения: 5 марта 2015. Архивировано из оригинала 6 марта 2015 года.
  16. Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts. ExtremeTech. Дата обращения: 5 марта 2015. Архивировано 22 апреля 2016 года.
  17. AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL. Wccftech.com (20 июня 2014). Дата обращения: 5 марта 2015. Архивировано 19 августа 2020 года.
  18. Kirsch, Nathan Is AMD Mantle Dead As We Have Known It? Vulkan API Uses Mantle Technology for OpenGL. Legit Reviews. Дата обращения: 5 марта 2015. Архивировано 26 июня 2015 года.
  19. Программный интерфейс Vulkan™ | AMD. Дата обращения: 24 ноября 2019. Архивировано 14 июля 2019 года.
  20. Vulkan API официально поддерживает multi-GPU на Windows 10, Windows 7, Windows 8.1 и Linux. PlayGround.ru. Дата обращения: 24 ноября 2019.
  21. AMD открыла исходный код V-EZ, оболочки кроссплатформенного низкоуровневого Vulkan API. Дата обращения: 28 августа 2018. Архивировано 28 августа 2018 года.
  22. GitHub - GPUOpen-LibrariesAndSDKs/V-EZ. Дата обращения: 28 августа 2018. Архивировано 29 августа 2018 года.
  23. Trademark Status & Document Retrieval. tsdr.uspto.gov. Дата обращения: 9 ноября 2015. Архивировано 11 мая 2013 года.
  24. glNext revealed as Vulkan graphics API. www.develop-online.net. Дата обращения: 9 ноября 2015. Архивировано 14 октября 2016 года.
  25. Valve announces Source 2 engine, free for developers. Polygon. Дата обращения: 9 ноября 2015. Архивировано 5 марта 2015 года.
  26. GDC 2015: Valve Announces Source 2 Engine - IGN. IGN. Дата обращения: 9 ноября 2015. Архивировано 4 марта 2015 года.
  27. Valve Developed An Intel Linux Vulkan GPU Driver - Phoronix. www.phoronix.com. Дата обращения: 9 ноября 2015. Архивировано 24 сентября 2015 года.
  28. Learning More About The Intel Vulkan Driver, Linux Vulkan Plans - Phoronix. www.phoronix.com. Дата обращения: 9 ноября 2015. Архивировано 24 сентября 2015 года.
  29. Evan Odabashian on Twitter. Twitter. Дата обращения: 9 ноября 2015. Архивировано 19 августа 2020 года.
  30. Reto Meier. Low-overhead rendering with Vulkan | Android Developers Blog. Low-overhead rendering with Vulkan | Android Developers Blog (10 августа 2015). Дата обращения: 9 ноября 2015. Архивировано 8 марта 2016 года.
  31. Khronos Vulkan Registry. www.khronos.org. Дата обращения: 9 марта 2018. Архивировано 10 марта 2018 года.
  32. Vulkan Applications Enabled on Apple Platforms. www.khronos.org. Дата обращения: 28 февраля 2018. Архивировано 28 февраля 2018 года.
  33. Khronos Group Releases Vulkan 1.1. www.khronos.org. Дата обращения: 9 марта 2018. Архивировано 14 апреля 2022 года.
  34. Khronos Group Releases Vulkan 1.2. www.khronos.org. Дата обращения: 15 января 2020. Архивировано 11 мая 2022 года.
  35. HLSL as a First Class Vulkan Shading Language. www.khronos.org. Дата обращения: 15 января 2020. Архивировано 15 января 2020 года.
  36. Khronos Group Releases Vulkan Ray Tracing. www.khronos.org. Дата обращения: 17 марта 2020. Архивировано 17 марта 2020 года.
  37. Khronos Strengthens Vulkan Ecosystem with Release of Vulkan 1.3, Public Roadmap and Profiles. www.khronos.org. Дата обращения: 25 января 2022. Архивировано 25 января 2022 года.
  38. VK_EXT_mesh_shader. Дата обращения: 8 сентября 2022. Архивировано 8 сентября 2022 года.
  39. Mesh Shading for Vulkan. Дата обращения: 8 сентября 2022. Архивировано 8 сентября 2022 года.
  40. Williams, Daniel; Smith, Ryan (2016-02-17). "Quick Look: Vulkan Performance on The Talos Principle". Anandtech. Архивировано из оригинала 15 мая 2022. Дата обращения: 19 февраля 2016.
  41. Dota 2 Update - May 23rd 2016. store.steampowered.com. Valve. Дата обращения: 24 мая 2016. Архивировано 8 ноября 2020 года.
  42. "Vulkan Support Now Live - FAQ" (англ.). 2016-07-11. Архивировано из оригинала 17 июня 2017. Дата обращения: 1 апреля 2017.
  43. "DOOM стала первой игрой-блокбастером с поддержкой Vulkan API". OSZone. 2016-07-11. Архивировано из оригинала 14 июля 2016. Дата обращения: 11 июля 2016.
  44. DOOM – Vulkan Support Now Live. bethesda.net. Дата обращения: 11 июля 2016. Архивировано 6 августа 2019 года.
  45. Papadopoulos, John Here is your first look at the first Quake being recreated in Unreal Engine 4 (fan project). Dark Side of Gaming (21 июля 2016). Дата обращения: 26 августа 2016. Архивировано 12 апреля 2022 года.
  46. Larabel, Michael Quake 1 Ported To Run On Vulkan. Phoronix. Phoronix Media (25 июля 2016). Дата обращения: 26 августа 2016. Архивировано 11 мая 2022 года.
  47. "See How Vulkan API and Galaxy S7 Create More Immersive Gaming Experiences" (англ.). 2016-06-28. Архивировано из оригинала 24 февраля 2017. Дата обращения: 1 апреля 2017.
  48. Твит Tiago Sousa 12.06.2017. Дата обращения: 19 июня 2017. Архивировано 30 мая 2019 года.
  49. Forum: Vulkan API Support? Дата обращения: 19 июня 2017. Архивировано 22 июля 2017 года.
  50. "X4 Foundations: neue 3D-Engine auf Basis von Vulkan wegen VR". PC Games Hardware (нем.). Архивировано из оригинала 14 ноября 2017. Дата обращения: 14 ноября 2017.
  51. forums.robertsspaceindustries.com. Архивировано из оригинала 1 мая 2017 года.
  52. Red Dead Redemption 2. Сравнительное тестирование видеокарт. Overclockers.ua. Дата обращения: 24 ноября 2019. Архивировано 19 декабря 2019 года.
  53. "Обновление 3.10.2 с бета-версией отрисовщика на базе Vulkan". Path of Exile. 2020-05-28. Дата обращения: 28 мая 2020.
  54. Godot Engine. Godot Engine - Godot 3.1 is out, improving usability and features. godotengine.org. Дата обращения: 17 марта 2019. Архивировано 18 марта 2019 года.
  55. Проект Anvil на сайте GitHub
  56. Проект GLOVE на сайте GitHub
  57. Проект MoltenVK на сайте GitHub
  58. Проект V-EZ на сайте GitHub
  59. KhronosGroup/Vulkan-Hpp. — 2020-12-07. Архивировано 15 декабря 2020 года.
  60. Проект Vulkano на сайте GitHub
  61. Проект PasVulkan на сайте GitHub
  62. Проект NVK на сайте GitHub
  63. Vulkan Overview. The Khronos Group. Дата обращения: 5 июля 2016. Архивировано 8 декабря 2015 года.

Литература[править | править код]