Vulkan是一個低開銷、跨平台的二維、三維圖形與計算的應用程式接口(API),[11]最早由科納斯組織在2015年遊戲開發者大會(GDC)上發表。[12][13]OpenGL類似,Vulkan針對全平台即時3D圖形程式(如電子遊戲交互媒體)而設計,並提供高效能與更均衡的CPUGPU占用,這也是Direct3D 12和AMDMantle的目標。與Direct3D(12版之前)和OpenGL的其他主要區別是,Vulkan是一個底層API,而且能執行並行任務。除此之外,Vulkan還能更好地分配多個CPU核心的使用。[14]

Quick Facts 開發者, 首次發布 ...
Vulkan
Thumb
Thumb
開發者科納斯組織,基於AMDMantle開發[1][2][3][4][5]
首次發布2016年2月16日,​8年前​(2016-02-16[6]
當前版本
  • 1.3.295 (2024年8月30日;穩定版本)[7]
編輯維基數據鏈接
源代碼庫 編輯維基數據鏈接
操作系統AndroidLinuxTizenMicrosoft Windows[8][9]
平台跨平台
類型3D圖形與計算API[10]
許可協議 編輯維基數據鏈接
網站www.khronos.org/vulkan/
Close

科納斯最先把Vulkan API稱為「次世代OpenGL行動」(next generation OpenGL initiative)或「glNext」,但在正式宣佈Vulkan之後這些名字就沒有再使用了。[15]Vulkan基於Mantle構建,AMD將其Mantle API捐贈給科納斯組織,給予該組織開發底層API的基礎,使其像OpenGL一樣成為行業標準。[3][10][16][17][18][19][20]

特性

Thumb
OpenGL與Vulkan都是圖形渲染API,GPU處理着色器,而CPU執行其他任務。

Vulkan旨在提供更低的CPU開銷與更直接的GPU控制,其理念大致與Direct3D 12和Mantle類似。[21]

以下是Vulkan相對於上一代API的優勢:[22]

  • Vulkan API適用於從高性能電腦到移動低功耗設備的顯示卡(OpenGL具有名為OpenGL ES的移動設備API子集,它仍是支持Vulkan設備的備選API)。
  • 相比於Direct3D 12,Vulkan與前身OpenGL類似,受多種操作系統支持。Vulkan已經能在Windows 7Windows 8Windows 10TizenLinuxAndroid上運行(iOSmacOS有第三方支持[23])。
  • 通過批量處理(Batching)減少CPU負載,使CPU可以執行更多其他的計算或渲染任務。[21][24]
  • 在多核心CPU上,Vulkan能對核心與線程進行優化。Direct3D 11與OpenGL 4最初為單核心CPU設計,儘管後來出現了針對多核心CPU優化的擴展,不過與Vulkan相比,優化仍不是很好。[25]
  • 減少了驅動程序的開銷與維護工作。OpenGL使用高級着色語言GLSL編寫着色器,不同的驅動在程序運行時需要執行自身的GLSL編譯器,將程序的着色器轉換為GPU可執行的機器代碼。而Vulkan驅動將着色器語言預先轉化為SPIR-V英語Standard Portable Intermediate Representation(Standard Portable Intermediate Representation)的中間二進制格式,其行為類似於Direct3DHLSL着色器。通過着色器預編譯,應用程序加載速度更快,並且3D場景可以使用更多種着色器。Vulkan驅動只需對GPU進行優化並生成代碼,這使得驅動程序更容易維護,驅動程序包更小(目前GPU供應商仍需在驅動程序中提供OpenGL與OpenCL的支持)。[26]
  • 計算與圖形處理的統一管理,因此Vulkan無需與單獨的計算API配合使用。

英偉達在2016年時指出,由於OpenGL的複雜度和維護難度比Vulkan低很多,在多數情況下也能提供理想的整體性能,現階段OpenGL仍是個很好的選擇。[27] AMD表示, Vulkan支援Close-To-Metal控制的獨特能力可加快跨 Windows和 Linux的效能並且提高影像品質。現今無其他圖形 API 提供如此強大的作業系統相容性、成像功能和硬體效率組合[28] 。 例如,CPU中包含的集成GPU可與高端專用GPU結合使用,以略微提高性能。

Vulkan 1.1

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

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

vulkan 1.2

2020年1月15日,科納斯組織發布了Vulkan 1.2,將23個已經通過驗證的擴展集成到基本Vulkan標準中[35],大部份用來幫助提升Vulkan與其他圖形API之間的兼容層性能。

Vulkan 1.3

2022年1月25日,科納斯組織發布了Vulkan 1.3。[36] 這次更新將另外23個常用的成熟的Vulkan擴展集成到基本的Vulkan標準中。

計劃中的功能

科納斯在SIGGRAPH 2016上宣布,Vulkan將提供類似於Direct3D 12的多卡互聯功能。[37]通過Vulkan,不同型號的顯卡也能協同工作,而無需NVIDIA SLIAMD Crossfire的支持。Vulkan多卡互聯功能允許API在多個不同的顯卡之間智能分配負載,例如,CPU上的集成顯卡與高端獨立顯卡協同工作,能夠略微提升顯示性能。[38]

在OpenCL 2.2規範發布時,科納斯宣布OpenCL將在未來融入Vulkan。[39][40]

歷史

2014年6月,科納斯組織開始了「次世代OpenGL」圖形API的計劃,並在Valve公司舉行項目啟動會議。[41]在SIGGRAPH 2014上,項目公之於世。[10]2015年2月19日,Vulkan的商標在美國專利及商標局提交。[42]

2015年早些時候,LunarG英語LunarG(由Valve資助)開發並展示了一款支持Vulkan API的Intel HD Graphics 4000系列Linux驅動程序,不過當時的Mesa開源驅動並不完全兼容OpenGL 4.0。[43][44]

2016年2月16日,科納斯組織發布了Vulkan 1.0版規範與開源軟件開發工具包(SDK)。[6]

支持Vulkan的軟件

電子遊戲

遊戲引擎

  • Source 2——2015年3月由Valve公司發布[51][52]
  • Serious Engine 4——2016年2月,Croteam宣布支持Vulkan API[53]
  • 虛幻引擎4——2016年2月Epic Games在三星Galaxy S7 Unpack發布會上聲明提供Vulkan支持[54][55]
  • Torque 3D英語Torque 3D——2016年4月,開發者社區宣稱將提供Vulkan支持[56][57]
  • id Tech 3引擎——在2017年5月增加了對Vulkan的非正式支持[58]
  • id Tech 4引擎——在2017年8月添加了非官方的Vulkan支持[59]
  • id Tech 6——2016年5月id Software宣布運行於id Tech 6引擎的《毀滅戰士》將支持Vulkan[60]
  • id Tech 7——僅在PC上使用Vulkan
  • Abyss Engine——2017年5月Deep Silver在Android上發佈了基於vulkan的浴火銀河3
  • Banshee 3D——支持Vulkan的免費開放源代碼跨平台遊戲引擎
  • CryEngine——Crytek計劃提供支持[61]
  • Xenko——2016年7月加入支持[62]
  • Intrinsic——在GitHub上託管的開源跨平台遊戲引擎[63]
  • Unity——2016年12月,Unity Technologies英語Unity Technologies表示其Unity遊戲引擎5.6版將支持Vulkan API;[64]2017年3月,Unity 5.6提供正式支持[65]
  • Roblox——自2017年3月起,Roblox支持Vulkan渲染
  • Rockstar高級遊戲引擎——除DirectX12外,還完全支持Vulkan
  • Godot——在2018年2月下旬,開發人員宣布將把重點改為使用OpenGL ES 2和Vulkan的組合。[66]
  • Flax Engine——於2019年4月添加Vulkan支持[67]
  • Apex Game Engine(來自雪崩工作室)——狂怒煉獄2改用Vulkan進行渲染[68]
  • Messiah Game Engine——網易高通合作,針對Vulkan優化[69]

開發工具

操作系統組件

Vulkan視窗系統接口(Window System Interface,WSI)的作用類似於OpenGL ESEGL英語EGL[72]EGL能使OpenGL ES程序跟原生視窗系統相通,並控制上下文管理英語Context management緩衝器綁定與渲染同步等。

兼容性

初版Vulkan規範指出,Vulkan能在支持OpenGL ES 3.1或OpenGL 4.x及更高版本的顯卡上運行。[73]但Vulkan API本身依賴於新版顯卡驅動程序,而且並非所有符合Vulkan規範的顯卡都能收到廠商提供的驅動程序更新。

2016年8月22日,Google發布的Android Nougat(Android 7.x)提供對Vulkan的支持。[74]

蘋果公司沒有對iOS和macOS提供官方Vulkan支持,而Molten公司開發的MoltenVK運行於蘋果Metal API,提供Vulkan第三方支持。[23]

參見

  • OpenGL,科納斯組織的另一個圖形API
  • OpenCL,科納斯組織的一個異構計算框架
  • Mantle,AMD的底層圖形與計算API,Vulkan的前身
  • Direct3D,Windows和Xbox專有的圖形API
  • Metal,iOS和macOS的一個底層圖形與計算API

參考資料

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.