Vulkan

跨平台的3D圖形與電腦程式介面 来自维基百科,自由的百科全书

Vulkan

Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口(API),[11]最早由科纳斯组织在2015年游戏开发者大会(GDC)上发表。[12][13]OpenGL类似,Vulkan针对全平台即时3D图形程序(如电子游戏交互媒体)而设计,并提供高性能与更均衡的CPUGPU占用,这也是Direct3D 12和AMDMantle的目标。与Direct3D(12版之前)和OpenGL的其他主要区别是,Vulkan是一个底层API,而且能执行并行任务。除此之外,Vulkan还能更好地分配多个CPU核心的使用。[14]

事实速览 开发者, 首次发布 ...
Vulkan
Thumb
Thumb
开发者科纳斯组织,基于AMDMantle开发[1][2][3][4][5]
首次发布2016年2月16日,​9年前​(2016-02-16[6]
当前版本
  • 1.4.313(2025年4月18日;稳定版本)[7]
编辑维基数据链接
源代码库 编辑维基数据链接
操作系统AndroidLinuxTizenMicrosoft Windows[8][9]
平台跨平台
类型3D图形与计算API[10]
许可协议
编辑维基数据链接
网站www.khronos.org/vulkan/
关闭

科纳斯最先把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]

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

历史

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

2015年早些时候,LunarG英语LunarG(由Valve资助)开发并展示了一款支持Vulkan API的Intel HD Graphics 4000系列Linux驱动程序,不过当时的Mesa开源驱动并不完全兼容OpenGL 4.0。[45][46]

2016年2月16日,科纳斯组织发布了Vulkan 1.0版规范与开源软件开发工具包(SDK)。[6]

支持Vulkan的软件

电子游戏

游戏引擎

  • Source 2——2015年3月由Valve公司发布[53][54]
  • Serious Engine 4——2016年2月,Croteam宣布支持Vulkan API[55]
  • 虚幻引擎4——2016年2月Epic Games在三星Galaxy S7 Unpack发布会上声明提供Vulkan支持[56][57]
  • Torque 3D英语Torque 3D——2016年4月,开发者社区宣称将提供Vulkan支持[58][59]
  • id Tech 3引擎——在2017年5月增加了对Vulkan的非正式支持[60]
  • id Tech 4引擎——在2017年8月添加了非官方的Vulkan支持[61]
  • id Tech 6——2016年5月id Software宣布运行于id Tech 6引擎的《毁灭战士》将支持Vulkan[62]
  • id Tech 7——仅在PC上使用Vulkan
  • Abyss Engine——2017年5月Deep Silver在Android上发布了基于vulkan的浴火银河3
  • Banshee 3D——支持Vulkan的免费开放源代码跨平台游戏引擎
  • CryEngine——Crytek计划提供支持[63]
  • Xenko——2016年7月加入支持[64]
  • Intrinsic——在GitHub上托管的开源跨平台游戏引擎[65]
  • Unity——2016年12月,Unity Technologies英语Unity Technologies表示其Unity游戏引擎5.6版将支持Vulkan API;[66]2017年3月,Unity 5.6提供正式支持[67]
  • Roblox——自2017年3月起,Roblox支持Vulkan渲染
  • Rockstar高级游戏引擎——除DirectX12外,还完全支持Vulkan
  • Godot——在2018年2月下旬,开发人员宣布将把重点改为使用OpenGL ES 2和Vulkan的组合。[68]
  • Flax Engine——于2019年4月添加Vulkan支持[69]
  • Apex Game Engine(来自雪崩工作室)——狂怒炼狱2改用Vulkan进行渲染[70]
  • Messiah Game Engine——网易高通合作,针对Vulkan优化[71]

开发工具

操作系统组件

Vulkan视窗系统接口(Window System Interface,WSI)的作用类似于OpenGL ESEGL英语EGL[74]EGL能使OpenGL ES程序跟原生视窗系统相通,并控制上下文管理英语Context management缓冲器绑定与渲染同步等。

兼容性

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

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

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

参见

  • OpenGL,科纳斯组织的另一个图形API
  • OpenCL,科纳斯组织的一个异构计算框架
  • Mantle,AMD的底层图形与计算API,Vulkan的前身
  • Direct3D,Windows和Xbox专有的图形API
  • Metal,iOS和macOS的一个底层图形与计算API

参考资料

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.