Tento článek je o rozhraní pro počítačovou grafiku. Další významy jsou uvedeny na stránce
Vulkán (rozcestník).
Vulkan je otevřené standardníAPI nové generace, které je určené pro vysoce výkonný přístup k grafice a výpočtům v grafickém procesoruGPU. Bylo vypuštěno a zdokonalováno sdruženímKhronos Group v roce 2016.[1]
Vulkan se používá při vývoji počítačových her a mobilních zařízení. Jeho jedinečnost spočívá v tom, že umožňuje vývojářům psát aplikace, které lze použít na mnoha různých platformách. Vulkan obsahuje nejnovější grafické technologie, jako napříkladray tracing, integraci do výrobních ovladačůNVIDIA proNVIDIA GeForce,RTX a Quadro proWindows aLinux, NVIDIA Shield a Jetson embedded computing platform proAndroid nebo Linux.[2]
Vulkan poskytuje mnoho výhod ve srovnání s jinýmiAPI. Nabízí nižší náklady, přímější ovládáníGPU a menší zátěž procesoru.
Mezi výhody Vulkanu oproti předchozí generaci API patří:
- Vulkan je skutečně multiplatformní API. Je k dispozici na operačních systémech Windows (od verze 7), Linux, Android,Fuchsia,Tizen,Raspberry Pi OS,QNX a Stadia. ProstřednictvímMoltenVK je Vulkan možno použít i naMacOS,tvOS aiOS.
- Jedná se o nízkoúrovňové grafické API, které poskytuje přímý přístup k hardwaru GPU a umožňuje efektivnější využití systémových zdrojů, což vede k nižší zátěži procesoru, nižší spotřebě paměti a vyšší stabilitě výkonu.[3]
- Vulkan podporujemultithreading. Znamená to, že je navržen s ohledem na výhody moderních vícejádrových procesorů a umožňuje efektivnější využití procesorových zdrojů.
- Umožňuje aplikacím odesílat více příkazů na GPU současně, což se nazývá asynchronní odesílání příkazů. Tento proces může pomoci snížit zpomalení a zlepšit výkon aplikace.
- Vulkan poskytuje explicitní správu paměti, což umožňuje aplikacím přímé zvýraznění a uvolnění paměti přímo na GPU, což snižuje zátěž procesoru.
- Využívápipeline architekturu (je to systém, který shromažďuje, organizuje a dodává data), a tím poskytuje větší flexibilitu a kontrolu nad procesem vykreslování grafiky.[4]
- Vulkan obsahuje řadu nástrojů a API pro ladění a profilování aplikací, včetně úrovní kontroly a nástrojů pro analýzu výkonu.
- Je navržen tak, aby byl kompatibilní s jinými grafickými API, jako jsouOpenGL aDirectX. To usnadňuje přenos aplikací z jednoho API do druhého.[5]
Vulkan je jasně odlišný od OpenGL a má přednost před ním v tom, že:
- efektivněji rozděluje zdroje mezi jádra (platí to pro procesor i grafickou kartu)
- OpenGL načítá jádraCPU střídavě: teprve po úplném načtení prvního jádra vstupuje do hry druhé. Rovnoměrně zatěžuje všechna dostupná jádra – spotřeba energie klesá a snímková frekvence se zvyšuje.
- Vulkan API umožňuje herní aplikaci samotné rozhodnout, kdy a jak využít GPU a jak spravovat paměť — na rozdíl od OpenGL, kde tuto úlohu plníovladač.[6]
- odstranění starších požadavků zjednodušuje návrh API a umožňuje jasnější směrování k použití Vulkanu.[7]
- PoužitíSPIR-V jako cílového programového kódu, který překládá text napsaný vprogramovacím jazyce do sady strojových kódů (compiler target), zjednodušuje práci ovladačů a umožňuje větší flexibilitu a spolehlivost rozhraní jazyka.[8]
Rozdíl mezi OpenGL a Vulkan je vidět v tomtovideu.
Při malém počtu položek je rozdíl ve výkonu neviditelný, ale pokud se jejich počet zvýší, Vulkan začne nesmírně převyšovat OpenGL. OpenGL využívá pouze dvě jádra, zatímco Vulkan používá všechna čtyři a zatěžuje je poměrně rovnoměrně.
Od doby vzniku API Vulkan bylo vydáno několik jeho verzí. Hlavní z nich jsou 1.0, 1.1, 1.2 a 1.3:
Vulkan 1.0
Je to původní vydání Vulkanu, které představila společnostKhronos Group v únoru 2016 spolu s experimentálními ovladači pro grafické karty AMD a NVIDIA. Tato verze zahrnovala základní sadu funkcí, včetně podpory nízkoúrovňového grafického API, multithreadingu a asynchronního odesílání příkazů.[9][10]
Vulkan 1.1
V tomto vydání, představeném 7. března 2018, bylo přidáno několik nových funkcí a rozšíření. Vulkan 1.1 nabízí dvě nové široké funkce: chráněný obsah a operace s podskupinami.
Mnoho rozšíření je zaměřeno na virtuální realitu nebo jakoukoli zvýšenou všestrannost, včetně „simultaneous rendering“ pro více druhů obrázků (zrychlení multiprojekce), „cross-API and cross-application interoperability“, širší výpočetní schopnosti, podporaYCbCr a skupiny zařízení pro homogenní konfigurace s více GPU. Zlepšila se také interakce sDirectX 12, významná podpora sledování paprsků a SPIR-V byl dokonce aktualizován na verzi 1.3.[11]
Vulkan 1.2
15. ledna 2020 Khronos Group představil Vulkan 1.2, který je z velké části zaměřen na programátory a integruje 23 dalších často používaných osvědčených rozšíření. Mezi rozšíření patří „timeline semaphores“, „buffer device address“, „descriptor indexing“, „host query reset“, „driver properties“ a další.[12]
Pro Vulkan 1.2 Khronos dosáhl plné podporyHLSL, což umožňuje snadnější přenos souborů nebo multiplatformní vývoj her mezi platformami Microsoft – DirectX 12 a rodinou konzolíXbox, a vším ostatním, co Vulkan podporuje.[12]
Vulkan 1.3
25. ledna 2022 byla vydána nová verze Vulkan 1.3, který se zaměřuje na snížení fragmentace. Mezi nové funkce ve Vulkan 1.3 patří dynamickýrendering, vylepšené synchronizační API a profily zařízení.[13]
- ↑ Vulkan | NVIDIA Developer | Ghostarchive.ghostarchive.org [online]. [cit. 2023-04-26].Dostupné v archivu pořízeném z originálu dne 2021-10-20.
- ↑ Vulkan Modern GPU API.NVIDIA Developer [online]. 2015-12-02 [cit. 2023-04-26].Dostupné online. (anglicky)
- ↑ vulkan_best_practice_for_mobile_developers.vulkan_best_practice_for_mobile_developers [online]. [cit. 2023-04-26].Dostupné v archivu pořízeném dne 2023-04-26. (anglicky)
- ↑Khronos Group. Vulkan 1.3 Specification [online]. [cit. 2023-04-26].Dostupné online.
- ↑LunarG. "Vulkan SDK Version Compatibility" (PDF). [online]. [cit. 2023-04-27].Dostupné online.
- ↑PHD, Svatoslav Kubín. Vulkan API Vše, co potřebujete vědět.Gadgetshowto [online]. [cit. 2023-04-26].Dostupné online.
- ↑"Vulkan Overview." Khronos Group, 2015 [online]. [cit. 2023-04-27].Dostupné online.
- ↑"Khronos Group. "Vulkan Overview." Khronos Group, 2015 [online]. [cit. 2023-04-27].Dostupné online.
- ↑Khronos Group. "Vulkan 1.0 Reference Guide." Yandex, 2016 [online]. [cit. 2023-04-27].Dostupné online.
- ↑ Опубликован графический стандарт Vulkan 1.0.www.opennet.ru [online]. [cit. 2023-04-26].Dostupné online.
- ↑OH, Nate. Vulkan 1.1 Specification Released: Open-source Tools, SDKs, and Launch Driver Support.www.anandtech.com [online]. [cit. 2023-04-26].Dostupné v archivu pořízeném dne 2023-04-26.
- ↑ab Vulkan 1.2 Arrives With An Eye On Greater Performance, Better Compatibility With Other 3D APIs On Top.www.phoronix.com [online]. [cit. 2023-04-26].Dostupné online. (anglicky)
- ↑ Khronos Strengthens Vulkan Ecosystem with Release of Vulkan 1.3, Public Roadmap and Profiles.The Khronos Group [online]. 2022-01-25 [cit. 2023-04-26].Dostupné online. (anglicky)
Obrázky, zvuky či videa k tématuVulkan na Wikimedia Commons