Vulkan
Vulkan (рус. Вулкан) — кроссплатформенный API для 2D- и 3D-графики, впервые представленный Khronos Group в рамках конференции GDC 2015[11][12].
Vulkan | |
---|---|
Тип | API |
Автор | Khronos Group |
Разработчик | Khronos Group |
Написана на | C |
Операционная система | |
Первый выпуск | 16 февраля 2016 г. |
Аппаратная платформа | кроссплатформенность |
Последняя версия | 1.3.240 (26 января 2023) |
Состояние | Актуальное |
Лицензия | Лицензия Apache |
Сайт | vulkan.org (англ.) |
Медиафайлы на Викискладе |
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]
- Побег из Таркова — объявлено добавление поддержки в будущем. [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)
- Counter-Strike: Global Offensive — Добавлена поддержка 11 Декабря 2021 года. DXVK (DirectX-Vulkan)
- 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.
См. такжеПравить
- OpenGL — другой графический API от Khronos Group.
- OpenCL — другой API для вычислений от Khronos Group.
- Mantle — низкоуровневый графический и вычислительный API от AMD.
- DirectX — набор API для Windows и Xbox.
- Metal (API)[en] — низкоуровневый графический и расчётный API для iOS и macOS.
- AMDGPU[en] — свободный графический драйвер видеокарт AMD для Linux.
- Glide — API для трёхмерной графики, разработанный 3dfx Interactive.
ПримечанияПравить
- ↑ Vulkan on FreeBSD (неопр.). Vulkan GPU info (1 июня 2021). Дата обращения: 22 мая 2022. Архивировано 14 марта 2022 года.
- ↑ Vulkan on QNX (неопр.). www.khronos.org (14 июля 2021). Дата обращения: 14 июля 2021. Архивировано 14 июля 2021 года.
- ↑ Nintendo Switch Listed as Vulkan and OpenGL Conformant - My Nintendo News (неопр.). My Nintendo News. Excite Global Media (19 декабря 2016). Дата обращения: 14 июля 2021. Архивировано 14 июля 2021 года.
- ↑ Palumbo, Alessio Nintendo Switch Officially Supports Vulkan, OpenGL 4.5 & OpenGL ES (неопр.). WCCF Tech (19 декабря 2016). Дата обращения: 14 июля 2021. Архивировано 14 июля 2021 года.
- ↑ Conformant Products (неопр.). khronos.org. The Khronos Group (28 апреля 2018). Дата обращения: 28 февраля 2018. Архивировано 28 января 2017 года.
- ↑ Vulkan on Raspberry Pi (неопр.). www.raspberrypi.org (14 июля 2021). Дата обращения: 14 июля 2021. Архивировано 20 июля 2021 года.
- ↑ Vulkan now official, with 1.0 API release and AMD driver [Updated] (неопр.). Ars Technica. Condé Nast (16 февраля 2016). Дата обращения: 18 февраля 2016. Архивировано 14 июля 2021 года.
- ↑ Valich, Theo Mantle Cycle is Complete as Khronos Releases Vulkan 1.0 (неопр.). VR World (17 февраля 2016). Дата обращения: 19 февраля 2016. Архивировано 11 мая 2022 года.
- ↑ 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 года.
- ↑ VxWorks offers support for many standard graphic libraries, such as ..., and Vulkan (неопр.). WinDriver. Дата обращения: 8 ноября 2021. Архивировано 8 ноября 2021 года.
- ↑ Vulkan : Graphics and compute Belong Together (неопр.) (PDF). Khronos.org (март 2015). Дата обращения: 5 марта 2015. Архивировано 18 декабря 2016 года.
- ↑ Vulkan - Graphics and compute belong together (неопр.). Khronos.org. Дата обращения: 5 марта 2015. Архивировано 9 мая 2021 года.
- ↑ glNext revealed as Vulkan graphics API (неопр.). Дата обращения: 27 марта 2015. Архивировано 14 октября 2016 года.
- ↑ Mantle is a Vulkan: AMD’s dead graphics API rises from the ashes in OpenGL’s successor | PCWorld (неопр.). Дата обращения: 27 марта 2015. Архивировано 7 ноября 2016 года.
- ↑ AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs (неопр.). Community.amd.com. Дата обращения: 5 марта 2015. Архивировано из оригинала 6 марта 2015 года.
- ↑ Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts (неопр.). ExtremeTech. Дата обращения: 5 марта 2015. Архивировано 22 апреля 2016 года.
- ↑ AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL (неопр.). Wccftech.com (20 июня 2014). Дата обращения: 5 марта 2015. Архивировано 19 августа 2020 года.
- ↑ Kirsch, Nathan Is AMD Mantle Dead As We Have Known It? Vulkan API Uses Mantle Technology for OpenGL (неопр.). Legit Reviews. Дата обращения: 5 марта 2015. Архивировано 26 июня 2015 года.
- ↑ Программный интерфейс Vulkan™ | AMD (неопр.). Дата обращения: 24 ноября 2019. Архивировано 14 июля 2019 года.
- ↑ Vulkan API официально поддерживает multi-GPU на Windows 10, Windows 7, Windows 8.1 и Linux (рус.). PlayGround.ru. Дата обращения: 24 ноября 2019.
- ↑ AMD открыла исходный код V-EZ, оболочки кроссплатформенного низкоуровневого Vulkan API (неопр.). Дата обращения: 28 августа 2018. Архивировано 28 августа 2018 года.
- ↑ GitHub - GPUOpen-LibrariesAndSDKs/V-EZ (неопр.). Дата обращения: 28 августа 2018. Архивировано 29 августа 2018 года.
- ↑ Trademark Status & Document Retrieval (неопр.). tsdr.uspto.gov. Дата обращения: 9 ноября 2015. Архивировано 11 мая 2013 года.
- ↑ glNext revealed as Vulkan graphics API (неопр.). www.develop-online.net. Дата обращения: 9 ноября 2015. Архивировано 14 октября 2016 года.
- ↑ Valve announces Source 2 engine, free for developers (неопр.). Polygon. Дата обращения: 9 ноября 2015. Архивировано 5 марта 2015 года.
- ↑ GDC 2015: Valve Announces Source 2 Engine - IGN (неопр.). IGN. Дата обращения: 9 ноября 2015. Архивировано 4 марта 2015 года.
- ↑ Valve Developed An Intel Linux Vulkan GPU Driver - Phoronix (неопр.). www.phoronix.com. Дата обращения: 9 ноября 2015. Архивировано 24 сентября 2015 года.
- ↑ Learning More About The Intel Vulkan Driver, Linux Vulkan Plans - Phoronix (неопр.). www.phoronix.com. Дата обращения: 9 ноября 2015. Архивировано 24 сентября 2015 года.
- ↑ Evan Odabashian on Twitter (неопр.). Twitter. Дата обращения: 9 ноября 2015. Архивировано 19 августа 2020 года.
- ↑ Reto Meier. Low-overhead rendering with Vulkan | Android Developers Blog (неопр.). Low-overhead rendering with Vulkan | Android Developers Blog (10 августа 2015). Дата обращения: 9 ноября 2015. Архивировано 8 марта 2016 года.
- ↑ Khronos Vulkan Registry (неопр.). www.khronos.org. Дата обращения: 9 марта 2018. Архивировано 10 марта 2018 года.
- ↑ Vulkan Applications Enabled on Apple Platforms (неопр.). www.khronos.org. Дата обращения: 28 февраля 2018. Архивировано 28 февраля 2018 года.
- ↑ Khronos Group Releases Vulkan 1.1 (неопр.). www.khronos.org. Дата обращения: 9 марта 2018. Архивировано 14 апреля 2022 года.
- ↑ Khronos Group Releases Vulkan 1.2 (неопр.). www.khronos.org. Дата обращения: 15 января 2020. Архивировано 11 мая 2022 года.
- ↑ HLSL as a First Class Vulkan Shading Language (неопр.). www.khronos.org. Дата обращения: 15 января 2020. Архивировано 15 января 2020 года.
- ↑ Khronos Group Releases Vulkan Ray Tracing (неопр.). www.khronos.org. Дата обращения: 17 марта 2020. Архивировано 17 марта 2020 года.
- ↑ Khronos Strengthens Vulkan Ecosystem with Release of Vulkan 1.3, Public Roadmap and Profiles (неопр.). www.khronos.org. Дата обращения: 25 января 2022. Архивировано 25 января 2022 года.
- ↑ VK_EXT_mesh_shader (неопр.).
- ↑ Mesh Shading for Vulkan (неопр.).
- ↑ Quick Look: Vulkan Performance on The Talos Principle, Anandtech (17 февраля 2016). Архивировано 15 мая 2022 года. Дата обращения: 19 февраля 2016.
- ↑ Dota 2 Update - May 23rd 2016 (неопр.). store.steampowered.com. Valve. Дата обращения: 24 мая 2016. Архивировано 8 ноября 2020 года.
- ↑ Vulkan Support Now Live - FAQ (англ.) (11 July 2016). Архивировано 17 июня 2017 года. Дата обращения: 1 апреля 2017.
- ↑ DOOM стала первой игрой-блокбастером с поддержкой Vulkan API (рус.), OSZone (11 июля 2016). Архивировано 14 июля 2016 года. Дата обращения: 11 июля 2016.
- ↑ DOOM – Vulkan Support Now Live (неопр.). bethesda.net. Дата обращения: 11 июля 2016. Архивировано 6 августа 2019 года.
- ↑ 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 года.
- ↑ Larabel, Michael Quake 1 Ported To Run On Vulkan (неопр.). Phoronix. Phoronix Media (25 июля 2016). Дата обращения: 26 августа 2016. Архивировано 11 мая 2022 года.
- ↑ See How Vulkan API and Galaxy S7 Create More Immersive Gaming Experiences (англ.), 2016-06-28. Архивировано 24 февраля 2017 года. Дата обращения: 1 апреля 2017.
- ↑ Твит Tiago Sousa 12.06.2017 (неопр.). Дата обращения: 19 июня 2017. Архивировано 30 мая 2019 года.
- ↑ Forum: Vulkan API Support? (неопр.) Дата обращения: 19 июня 2017. Архивировано 22 июля 2017 года.
- ↑ X4 Foundations: neue 3D-Engine auf Basis von Vulkan wegen VR (нем.), PC Games Hardware. Архивировано 14 ноября 2017 года. Дата обращения: 14 ноября 2017.
- ↑ forums.robertsspaceindustries.com (неопр.). Архивировано из оригинала 1 мая 2017 года.
- ↑ Red Dead Redemption 2. Сравнительное тестирование видеокарт (рус.). Overclockers.ua. Дата обращения: 24 ноября 2019. Архивировано 19 декабря 2019 года.
- ↑ Обновление 3.10.2 с бета-версией отрисовщика на базе Vulkan (рус.), Path of Exile (28 мая 2020). Дата обращения: 28 мая 2020.
- ↑ Godot Engine. Godot Engine - Godot 3.1 is out, improving usability and features (неопр.). godotengine.org. Дата обращения: 17 марта 2019. Архивировано 18 марта 2019 года.
- ↑ Проект Anvil на сайте GitHub
- ↑ Проект GLOVE на сайте GitHub
- ↑ Проект MoltenVK на сайте GitHub
- ↑ Проект V-EZ на сайте GitHub
- ↑ KhronosGroup/Vulkan-Hpp. — 2020-12-07. Архивировано 15 декабря 2020 года.
- ↑ Проект Vulkano на сайте GitHub
- ↑ Проект PasVulkan на сайте GitHub
- ↑ Проект NVK на сайте GitHub
- ↑ Vulkan Overview (неопр.). The Khronos Group. Дата обращения: 5 июля 2016. Архивировано 8 декабря 2015 года.
ЛитератураПравить
- Селлерс Г. Vulkan. Руководство разработчика = Vulkan. Programming Guide. — ДМК Пресс, 2017. — 394 с. — ISBN 978-5-97060-486-1.