时间:2023-08-24 09:06:05 浏览:93
vulkan是一款跨平台的2d和3d图形应用程序接口,2015年由khronos在gdc首次发布。本质上是amd mantle的后续版本,继承了amd mantle强大的低开销架构,让开发者可以方便全面的获得gpu和多核cpu的性能、功能和效率。
与opengl相比,vulkan支持深度硬件控制,可以大大降低高负载绘图任务中cpu的开销。同时其对多核cpu的支持更加完善,更适合从高端工作站到pc平台再到移动平台的多核策略。
vulkan因其高性能、低成本而广受欢迎。虽然上市时间不长,但是支持vulkan的游戏和应用很多,比如《doom》 《dota2》 《极品飞车—无极限》。
1.1 vulkan概述
在介绍具体的开发技术之前,本节先介绍vulkan的历史传承和一些技术特点,同时对vulkan和其他图形应用界面(opengl、directx、metal等)做一个简单的比较。).最后介绍一下目前支持vulkan的游戏,具体内容如下。
1 . 1 . 1 vulkan简介
在了解vulkan的具体知识之前,我们有必要先了解一下市场上主流的3d图形应用界面。目前各种平台上主流的三维图形api有opengl、opengl es、directx、metal、vulkan,各自的应用领域和特点如下。
opengl应用广泛,支持多种操作系统平台(如windows、unix、linux、macos等)。).基于它开发的应用程序可以方便、低成本地在不同的操作系统平台之间移植。它可以用来开发游戏和工业应用。
opengl es是专门为移动嵌入式平台设计的,实际上是opengl的裁剪版。去掉了opengl中很多不必要的特性,优化了对性能和电源有限的移动嵌入式平台的支持。
directx是微软的专有技术,主要用于开发windows下的游戏,在这个领域占有非常高的比例。最新版本是directx 12,大大优化了对多核cpu的支持,但只支持windows 10。
金属是苹果的专有技术,只能在macos和ios下使用。应用领域相对狭窄,目前基于它的应用相对较少。
vulkan和opengl一样,是跨平台的3d图形应用界面,支持windows 7、windows 8.1、windows 10、linux、android等平台。
vulkan最早被称为下一代opengl,项目名称是glnext。它的设计考虑了统一平台的开发,所以不像opengl和opengl es,根据硬件性能和电源区分不同版本,但是工作站、pc、移动嵌入式平台等等是完全一致的。这对广大开发者来说是一个很大的好处。
2016年2月16日,khronos组织发布了vulkan的第一个官方版本。从此,数字图形技术行业产生了一个全新的图形应用程序接口,可以真正意义上与directx 12和metal抗衡。截止到2016年4月,google在android n的第二个开发预览版中正式加入了对vulkan的支持,vulkan的主要特性如下。
vulkan提供了更低的运行开销、更直接的gpu控制和更低的cpu负载。它通过批处理的方式有效降低了cpu的负载,将cpu从额外的操作和渲染中解放出来执行其他任务。
与过去针对cpu单核设计的opengl相比,vulkan原生支持多线程和并发处理,可以更好地与采用多核策略的cpu配合工作。directx 12、metal等厂商专有的新一代图形应用程序接口也提供多线程并发支持,可见这是行业内的一大趋势。
在着色器方面,vulkan不再指定类似opengl的高级着色器编程语言(opengl指定glsl着色器编程语言),而是采用一种称为spir-v(标准可移植中间表示)的二进制中间层格式。这样,开发vulkan着色器时,开发者可以选择自己喜欢的着色器编程语言,比如glsl、hlsl等。然后使用着色器专用编译器将着色器源代码编译成spir-v格式,可以在vulkan中使用,大大提高了灵活性。
vulkan以统一的方式管理计算任务和图形渲染任务,而不使用单独的计算和图形应用程序接口来连接。
与opengl的状态机不同,它会在运行任务时自动检查各种错误(无法关闭)。为了追求更高的执行效率,vulkan将各种错误检查设计为可插拔模式。开发人员可以在开发调试时打开所需的错误检查项,发布时关闭错误检查项,以达到更好的性能。
vulkan在架构层面提供了多轮渲染的支持,使得更高效地实现延迟渲染成为可能,极大地提高了特定场景下的渲染效率。
vulkan本身就深刻深刻,其革命性的设计远远不止于此。读者可以在这本书的脚步中逐渐深入地了解vulkan的方方面面。
1.1.2支持vulkan的游戏概述
通过简要介绍,读者已经基本了解了vulkan相对于传统图形应用程序界面的诸多优势。由于vulkan的这些突出特点,市面上的几款知名游戏都开始使用vulkan。但是由于vulkan诞生不久,使用vulkan的游戏数量并不是很大。接下来我们简单介绍几款使用vulkan的游戏。
刀塔
作为一部深受玩家欢迎的大作,dota 2早在2016年就发布了官方补丁支持vulkan。图1-1是原dota 2的游戏场景,图1-2是在vulkan支持下运行的dota 2的游戏场景。
图1-1原版dota 2游戏场景
图1-2 vulkan支持的dota 2游戏场景
解释
对比图1-1和图1-2可以看出,vulkan支持的dota 2比原来的dota 2场景更加生动细腻。在游戏的实际对比测试中,可以感觉到vulkan支持的dota 2运行更流畅,可以观察到cpu利用率更低,体现了vulkan降低cpu开销的特点。
极品飞车
通过对比dota 2使用vulkan前后的场景,观察了vulkan在三维图形处理方面的进展。接下来我们将展示电子艺界开发的赛车比赛游戏《速度需求:无限》,进一步体验vulkan的3d图形处理能力,如图1-3和图1-4所示。
图1-3速度需求:无限场景1
图1-4速度需求:无限场景2
解释
可以看出,vulkan api渲染的以上两个《速度需求:无限》游戏场景的光影效果极其逼真,烟雾和运动模糊效果非常真实。
梦想联盟足球
在介绍完以上两个游戏dota 2和需要速度之后,我还要介绍一下first touch开发的运动游戏——梦幻联盟足球。游戏自发布以来,受到玩家的好评,现在vulkan版本已经发布,效果分别如图1-5和1-6所示。
图1-5梦幻联赛足球场景1
图1-6梦幻联赛足球场景2
通过观察上述游戏屏幕,我们可以欣赏到vulkan在三维图形处理能力上的提升。在前面的内容中,已经多次提到vulkan的一个优点是可以大大降低渲染时的cpu开销,这将直接影响游戏运行和画面的流畅度。相关权威机构都站在vulkan这边。
表面上有很多测试。
比如贝塞斯达和英伟达早在2016年就进行了相关测试,测试结果显示使用directx 11以1080p分辨率运行《毁灭战士4》,平均帧率在55-60之间。之后用vulkan做同样的渲染工作,整个游戏帧率提升到120以上。可见vulkan在降低cpu开销和渲染图形方面是有效的。
本书系统介绍了下一代opengl规范vulkan,揭示了vulkan的独特性。这本书的主要内容包括:内存和资源、队列和命令、数据移动、图像显示、着色器和管道、图形管道对象、绘制命令、几何处理、片段处理、同步、数据回读和多渲染通道。
相关文章
怀孕周期
备孕分娩婴儿早教
猜你喜欢