Vulkan
![]() | |
![]() | |
Vývojář | Khronos Group |
---|---|
První vydání | 16. února 2016 |
Aktuální verze | 1.3.294 (23. srpna 2024) |
Operační systém | Microsoft Windows Linux Android iOS macOS |
Platforma | multiplatformní software |
Vyvíjeno v | C++ a C |
Licence | Apache License, Version 2.0 licence Apache |
Web | www |
Některá data mohou pocházet z datové položky. |
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 ve grafickém procesoru GPU. Bylo vypuštěno a zdokonalováno sdružením Khronos 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říklad ray tracing, integraci do výrobních ovladačů NVIDIA pro NVIDIA GeForce, RTX a Quadro pro Windows a Linux, NVIDIA Shield a Jetson embedded computing platform pro Android nebo Linux.[2]
Výjimečnost
Vulkan poskytuje mnoho výhod ve srovnání s jinými API. 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ím MoltenVK je Vulkan možno použít i na MacOS, tvOS a iOS.
- 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 podporuje multithreading. 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 jsou OpenGL a DirectX. To usnadňuje přenos aplikací z jednoho API do druhého.[5]
OpenGL a Vulkan
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ádra CPU 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ý v programovací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 tomto videu.
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ě.
Rozvoj API
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čnost Khronos 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, podpora YCbCr a skupiny zařízení pro homogenní konfigurace s více GPU. Zlepšila se také interakce s DirectX 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é podpory HLSL, 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]
Odkazy
Reference
- ↑ 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é online. (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é online.
- ↑ a b 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)
Externí odkazy
Obrázky, zvuky či videa k tématu Vulkan na Wikimedia Commons