Vulkan

Vulkan是一個低开销、跨平台的二维、三维图形与计算的應用程式接口（API），最早由科納斯組織在2015年游戏开发者大会（GDC）上發表。与OpenGL类似，Vulkan針對全平台即時3D图形程式（如電子遊戲和交互媒体）而設計，并提供高效能与更均衡的CPU与GPU占用，這也是Direct3D 12和AMD的Mantle的目標。与Direct3D（12版之前）和OpenGL的其他主要区别是，Vulkan是一个底层API，而且能执行并行任务。除此之外，Vulkan还能更好地分配多个CPU核心的使用。

科納斯最先把Vulkan API稱為「次世代OpenGL行動」（next generation OpenGL initiative）或「glNext」，但在正式宣佈Vulkan之後這些名字就沒有再使用了。Vulkan基于Mantle构建，AMD将其Mantle API捐赠给科納斯組織，给予该组织开发底层API的基础，使其像OpenGL一样成为行业标准。

 特性 
缩略图|OpenGL与Vulkan都是图形渲染API，GPU处理着色器，而CPU执行其他任务。
Vulkan旨在提供更低的CPU开销与更直接的GPU控制，其理念大致与Direct3D 12和Mantle类似。

以下是Vulkan相对于上一代API的优势：
 Vulkan API适用于从高性能电脑到移动低功耗设备的显示卡（OpenGL具有名为OpenGL ES的移动设备API子集，它仍是支持Vulkan设备的备选API）。
 相比于Direct3D 12，Vulkan与前身OpenGL类似，受多种操作系统支持。Vulkan已经能在Windows 7、Windows 8、Windows 10、Tizen、Linux与Android上运行（iOS和macOS有第三方支持）。
 通过批量处理（Batching）减少CPU负载，使CPU可以执行更多其他的计算或渲染任务。
 在多核心CPU上，Vulkan能对核心与线程进行优化。Direct3D 11与OpenGL 4最初为单核心CPU设计，尽管后来出现了针对多核心CPU优化的扩展，不过与Vulkan相比，优化仍不是很好。
 减少了驱动程序的开销与维护工作。OpenGL使用高级着色语言GLSL编写着色器，不同的驱动在程序运行时需要执行自身的GLSL编译器，将程序的着色器转换为GPU可执行的机器代码。而Vulkan驱动将着色器语言预先转化为（Standard Portable Intermediate Representation）的中间二进制格式，其行为类似于Direct3D的HLSL着色器。通过着色器预编译，应用程序加载速度更快，并且3D场景可以使用更多种着色器。Vulkan驱动只需对GPU进行优化并生成代码，这使得驱动程序更容易维护，驱动程序包更小（目前GPU供应商仍需在驱动程序中提供OpenGL与OpenCL的支持）。
 计算与图形处理的统一管理，因此Vulkan无需与单独的计算API配合使用。
英伟达在2016年时指出，由於OpenGL的复杂度和维护难度比Vulkan低很多，在多数情况下也能提供理想的整体性能，现阶段OpenGL仍是个很好的选择。
AMD表示, Vulkan支援Close-To-Metal控制的獨特能力可加快跨 Windows和 Linux的效能並且提高影像品質。現今無其他圖形 API 提供如此強大的作業系統相容性、成像功能和硬體效率組合 。 例如，CPU中包含的集成GPU可與高端專用GPU結合使用，以略微提高性能。

Vulkan 1.1
科納斯在SIGGRAPH2016上宣布Vulkan將支持自動多GPU功能,類似於Direct3D 12所提供的功能 ,顯示驅動程序不再需要處理多個GPU的使用,相反，兩個或更多完全不同的GPU之間可以智能地分配工作負載。

科納斯於2018年3月7日發布了Vulkan 1.1 。它擴展了幾個核心功能，包括子集操作，例如多視圖、設備組、高級渲染和編輯操作程序跨流程API交互操作。這些核心功能還包括16位內存獲取高級計算，HLSL內存分佈支持，視頻流的顯示，處理和編程，通過許多視頻編輯解碼器生成的YCbcRr顏色格式化紋理的直接抽樣。同時，它還帶來了與DirectX 12的更好兼容性，顯式支持多GPU，光線跟踪支持，為下一代GPU奠定了基礎。 

vulkan 1.2
2020年1月15日，科納斯組織發布了Vulkan 1.2，將23個已經通過驗證的擴展集成到基本Vulkan標準中，大部份用來幫助提升Vulkan與其他圖形API之間的兼容層性能。
Vulkan 1.3
2022年1月25日，科納斯組織发布了Vulkan 1.3。 这次更新将另外23个常用的成熟的Vulkan扩展集成到基本的Vulkan标准中。

Vulkan 1.4
2024年12月3日，科納斯組織发布Vulkan 1.4。

 计划中的功能 
科纳斯在SIGGRAPH 2016上宣布，Vulkan将提供类似于Direct3D 12的多卡互联功能。通过Vulkan，不同型号的显卡也能协同工作，而无需NVIDIA SLI或AMD Crossfire的支持。Vulkan多卡互联功能允许API在多个不同的显卡之间智能分配负载，例如，CPU上的集成显卡与高端独立显卡协同工作，能够略微提升显示性能。

在2017年5月发行OpenCL 2.2之时，Khronos Group宣布OpenCL将尽可能的汇合于Vulkan，以确使OpenCL软件在这两种API上灵活部署。这已经由Adobe的Premiere Rush展示出来，它使用clspv开源编译器，编译了大量OpenCL C内核代码，从而在部署于Android的Vulkan运行时系统上运行。

 历史 
2014年6月，科纳斯组织开始了“次世代OpenGL”图形API的计划，并在Valve公司举行项目启动会议。在SIGGRAPH 2014上，项目公之于世。2015年2月19日，Vulkan的商标在美国专利及商标局提交。

2015年早些时候，（由Valve资助）开发并展示了一款支持Vulkan API的Intel HD Graphics 4000系列Linux驱动程序，不过当时的Mesa开源驱动并不完全兼容OpenGL 4.0。

2016年2月16日，科纳斯组织发布了Vulkan 1.0版规范与开源软件开发工具包（SDK）。

 支持Vulkan的软件 

 电子游戏 
 《塔洛斯法则》——首个支持Vulkan渲染的游戏
 《Dota 2》——2016年5月开始支持
 《毁灭战士》——2016年7月开始支持
 《虹彩六號:圍攻行動》——PC公開測試中
 vkQuake——《雷神之锤》的Vulkan移植版，于2016年7月发布
 World War Z——《末日之戰》電影改編遊戲。由Epic Games出品。
 Red Dead Redemption 2——《碧血狂殺2》。由Rockstar Games出品。
 X-Plane（飛行模擬軟體）——由Laminar Research推出。從X-Plane 11開始支援，X-Plane 12作為默認渲染方式

 游戏引擎 
 Source 2——2015年3月由Valve公司发布
 Serious Engine 4——2016年2月，Croteam宣布支持Vulkan API
 虚幻引擎4——2016年2月Epic Games在三星Galaxy S7 Unpack发布会上声明提供Vulkan支持
 ——2016年4月，开发者社区宣称将提供Vulkan支持
 id Tech 3引擎——在2017年5月增加了對Vulkan的非正式支持
 id Tech 4引擎——在2017年8月添加了非官方的Vulkan支持
 id Tech 6——2016年5月id Software宣布运行于id Tech 6引擎的《毁灭战士》将支持Vulkan
 id Tech 7——僅在PC上使用Vulkan
 Abyss Engine——2017年5月Deep Silver在Android上發佈了基於vulkan的浴火銀河3
 Banshee 3D——支持Vulkan的免費開放源代碼跨平台遊戲引擎
 CryEngine——Crytek计划提供支持
 Xenko——2016年7月加入支持
 Intrinsic——在GitHub上托管的开源跨平台游戏引擎
 Unity——2016年12月，Unity Technologies表示其Unity游戏引擎5.6版将支持Vulkan API；2017年3月，Unity 5.6提供正式支持
 Roblox——自2017年3月起，Roblox支持Vulkan渲染
 Rockstar高級遊戲引擎——除DirectX12外，還完全支持Vulkan
 Godot——在2018年2月下旬，開發人員宣布將把重點改為使用OpenGL ES 2和Vulkan的組合。
 Flax Engine——於2019年4月添加Vulkan支持
 Apex Game Engine(來自雪崩工作室)——狂怒煉獄2改用Vulkan進行渲染
 Messiah Game Engine——網易與高通合作，針對Vulkan優化

 开发工具 
  3.6，在Windows与Linux平台上支持Vulkan
 ，作为GTK+ 3.90的一个组件于2017年3月发布

 操作系统组件 
Vulkan视窗系统接口（Window System Interface，WSI）的作用类似于OpenGL ES的。EGL能使OpenGL ES程序跟原生视窗系统相通，并控制、缓冲器绑定与渲染同步等。

 兼容性 
初版Vulkan规范指出，Vulkan能在支持OpenGL ES 3.1或OpenGL 4.x及更高版本的显卡上运行。 p. 19 "Vulkan Status"但Vulkan API本身依赖于新版显卡驱动程序，而且并非所有符合Vulkan规范的显卡都能收到厂商提供的驱动程序更新。

2016年8月22日，Google发布的Android Nougat（Android 7.x）提供对Vulkan的支持。

苹果公司没有对iOS和macOS提供官方Vulkan支持，而Molten公司开发的MoltenVK运行于苹果Metal API，提供Vulkan第三方支持。

 参见 
 OpenGL，科納斯組織的另一个图形API
 OpenCL，科納斯組織的一个异构计算框架
 Mantle，AMD的底层图形与计算API，Vulkan的前身
 Direct3D，Windows和Xbox专有的图形API
 Metal，iOS和macOS的一个底层图形与计算API

參考資料

 外部链接 
 Vulkan 1.0规范 
 Vulkan硬件支持数据库 

Category:應用程式接口
Category:跨平台軟體
Category:繪圖函式庫
Category:電子遊戲研發
Category:虛擬現實
Category:2015年软件
Category:3D圖形應用程式介面
Category:自由软件