Hello Vulkan(一)| 图形渲染新技术教程总览|焦点观察
前言这几年音视频、直播应用呈现大爆发趋势,各类APP都会融入音视频相关技术,而其中美颜AR特效技术更是在各大平台掀起各类现象级的流行。随着
前言
这几年音视频、直播应用呈现大爆发趋势,各类APP都会融入音视频相关技术,而其中美颜AR特效技术更是在各大平台掀起各类现象级的流行。随着元宇宙领域的爆火,基于视觉渲染的各类3D的XR应用如雨后春笋般应运而出,在这些酷炫的音视频和XR应用背后,离不开渲染技术,而渲染技术,你或许听过OpenGL,但现在有一项不得不提的新技术逐渐呈迅速上升态势 —— Vulkan。 Vulkan是一个跨平台的2D和3D渲染API,由Khronos Group在2014年开始提出,2016年顺利发布1.0版本。Vulkan最早被称为下一代OpenGL —— GLNext,但是因为和OpenGL不一样的是,设计时考虑了统一各平台的开发,而不是像OpenGL或者OpenGL ES,根据硬件性能区分不同版本,所以从这个角度出发,对于开发是一个极大的利好。 本系列内容将和大家一起来探讨,为什么Vulkan越来越受到开发者及企业,尤其是XR、游戏行业的青睐?未来渲染技术又将如何发展?以及虹图TexelJoy是怎么基于OpenGL、Vulkan进行提供产品服务,又将如何支持最新的渲染架构的? 疫情三年,音视频应用,如在线会议、在线教育、直播带货、音视频社交等等已经成为了现代人们生活中司空见惯的一部分,将常见的线下场景转至线上。在这些应用里,首先将数据流渲染到屏会设计渲染技术,更重要的是这些应用里对人像人体技术的应用,如美颜SDK特效的应用充分展现的渲染技术的价值和重要。 如果时间拨到2014年,也就是Vulkan项目还没有启动的时候,几乎所有的音视频应用刚开始萌芽,特效相机等AR应用刚开始成熟,但大家更多的聚焦在讨论特效有多么有创意,但随着4G到5G时代,越来越多的精细的模型、场景需要被渲染,焦点就从创意分散到创意+渲染效率。 在这5年多时间里,渲染技术的焦点转换又是如何一步一步实现的呢? 2016年前,主流的图形渲染API有OpenGL、OpenGL ES、DirectX、Metal等。OpenGL的应用领域较为广泛,支持多种操作系统平台(如Windows、UNIX、Linux、macOS等)。基于其开发的应用可以方便、低成本地在不同操作系统平台之间移植。既可以用于开发游戏,又可以用于开发工业、行业应用。OpenGL ES则是OpenGL针对移动端的裁剪版本。DirectX是微软针对Win系统下图形渲染的技术,Metal则是针对Mac/iOS系统下图形渲染技术,从占有率而言DirectX是远远超过Metal的。不难看出对跨平台有需求的应用,选择只有OpenGL/OpenGL ES。 那么OpenGL在和Vulkan相比,Vulkan能够更好的调动GPU的性能,OpenGL在使用GPU前需要CPU处理很多数据,而Vulkan能够提供更小的运行开销、更直接的GPU控制、和更低的CPU负载。
(资料图片仅供参考)
什么是Vulkan
上面已经介绍了Vulkan是由Khronos Group发起的针对跨平台图形渲染的开源项目。最初名称叫GLNext,因此不难看出,这项技术最初是想取代OpenGL成为下一代渲染API的,但其实这是一个很大的误区。
由于Vulkan最初起源于AMD的Mantle API,深刻地受苹果Metal API和微软DirectX 12影响,因此让统一跨平台开发成为可能,大大降低了图形渲染跨平台的门槛,甚至比OpenGL还要方便,因为不需要根据不同性能、供电区分不同版本。
开发者为什么越来越多的使用Vulkan
“GPU的可编程性越来越强,越来越多的平台开始支持加速图形,计算,视觉和深度学习。灵活性和可移植性变得很重要。” Vulkan解决了什么问题?在没有Vulkan之前,OpenGL已经发展了25年以上,现在的GPU的性能越来越强,加上AI深度学习的迅速发展,性能上的要求越来越大,而OpenGL不能完全发挥现代CPU和GPU的性能优势。为了解决这些问题,行业对新一代GPU API就提出了更高的要求。
更简单的驱动复杂度和开销
上文已经提过,Vulkan提供更低的运行开销、更直接的GPU控制和较低的CPU负载。其通过批处理方式有效减少CPU的负载,将CPU从额外的运算和渲染中解放出来去执行其他的任务。
更少的用户操作难度
正是由于Vulkan本质上是AMD Mantle的后续版本,继承了前者强大的低开销架构,使开发人员能够方便全面地获取GPU与多核CPU的性能、功能和提升效率,开发者的操作难度被大大降低。
更高的单线程性能,支持多线程图形渲染
相比于OpenGL的面向CPU单核心设计,Vulkan原生支持多线程并发处理,能够更好地与当下普遍采用多核战略的CPU协同工作。同时在单线程工作下性能更强,也是源于它的低开销架构。
支持处理图块渲染
图块渲染Tiled rendering是一种在光学空间中通过规则的网格细分计算机图形图像并分别渲染网格(grid)或图块(tile)各部分的过程。优点在于减少了对内存和带宽的消耗,这使图块渲染系统的使用特别常见于低功耗硬件设备。而Vulkan对tiled rendering的支持,也使得在低功耗硬件设备的支持度更高。 Vulkan和OpenGL的对比
1. 更底层的指令必须由开发者在应用里提供,而不是驱动提供在Vulkan里,GPU driver做更少的事情,把更多的控制权交给开发者,Vulkan强调的是开发者决定一切。Vulkan不会在驱动程序后台中做隐式的优化 "意图"。让程序员有更大空间去发挥,自由的调度流程和优化以及内存分配和释放。程序员需要自己去完成优化方案,而不是像传统的OpenGL API一样在驱动程序当中通过调用API模式来揣测并且推断所有操作的优化方法。
2. 坐标系是Y轴向下OpenGL, OpenGL ES and WebGL: Y轴向上为正,(-1,-1)在左下角,Vulkan:Y轴向下为正,(-1,-1)在左上角。
3. 一些OpenGL声明即将弃用的部分被彻底弃用OpenGL的内置管线转换、begin-end、fixed-function等被OpenGL一直宣称弃用的技术,在Vulkan中不再被支持。
4. 部分操作只可以在Shader做Vulkan中开发者必须管理自己的操作,控制权由开发者掌握,但图形的移动、颜色、及纹理相关的功能,必须在着色器Shader中完成。并且Shader以一种半预处理的状态独立于应用之外,编译过程是在运行时建立管线流程时完成的。
5. 内存驱动架构不同
1. 命令缓冲区Command Buffers
Vulkan并不是使用函数调用来执行绘画或者内存转移等操作,而是保存这些操作到设置好的命令缓冲区中。这样绘画指令可以提前并且可以多线程执行。缓冲区以队列形式排布,当应用需要使用到时进行flush操作。每个命令缓冲区可以从不同线程填入。
2. Pipeline State ObjectsVulkan 使用基于对象的状态(称为描述符),允许应用程序提前预打包已使用状态的组合。编译后的管道对象结合了所有相关状态,允许更可预测地应用基于Shader的优化,从而降低运行时成本。这些更改的影响是显着降低了图形驱动程序的 CPU 开销,代价是要求应用程序预先确定它需要的状态,以便构建状态对象并从减少的开销中受益。
3. 更典型的总体框架图关于Vulkan在这方面设计理念可以在管线Pipeline的设置当中体现。一个Pipeline包含了传统API中大部分的状态和属性。只不过Pipeline是需要事先创建好的,这样所有的状态组合的验证和编译都可以在初始化的时候完成,运行时不会再因为这些操作有任何性能上的浪费。
Vulkan实战演练
Vulkan是跨平台图形渲染API一次大的提升,大大降低了跨平台开发门槛及提高了GPU的使用效率。
关于Vulkan的一些快速预览卡,可以参考:https://www.khronos.org/files/vulkan11-reference-guide.pdf
用Vulkan创建图形渲染的步骤:
1. Create the Vulkan Instance
2. Setup the Debug Callbacks
3. Create the Surface
4. List the Physical Devices
5. Pick the right Physical Device
6. Create the Logical Device
7. Create the Uniform Variable Buffers
8. Create the Vertex Data Buffers
9. Create the texture sampler
10. Create the texture images
11. Create the Swap Chain
12. Create the Depth and Stencil Images
13. Create the RenderPass
14. Create the Framebuffer(s)
15. Create the Descriptor Set Pool
16. Create the Command Buffer Pool
17. Create the Command Buffer(s)
18. Read the shaders
19. Create the Descriptor Set Layouts
20. Create and populate the Descriptor Sets
21. Create the Graphics Pipeline(s)
22. Update-Render-Update-Render- …
* 关于Vulkan的第一份使用示例可以供大家参考:
欢迎大家关注虹图AI开放平台公众号,后台回复“Sample2019.zip”获取。其中2019是使用Visual Studio的版本,不代表该示例程序编写的时间~
关于Vulkan以及图形渲染相关的实践内容,我们会在本系列后续内容中与大家分享。(虹图人像人体中美颜SDK部分是基于Vulkan进行开发封装的,性能极致,对开发者更加友好,十行之内完成一个简单的demo,点击【阅读原文】可查看详情。)
敬请期待~
关键词: VULKAN OPENGL METAL SHADER 在线教育 3D渲染 DIRECTX 产品服务 实战演练 GRID TILE A_PI Visual Studio WINDOWS linux macOS Demo 1.0版本 UNIX 深度学习 操作系统 应用程序 2014年 大家一起来 不一样的 游戏行业 设计理念 敬请期待
前言这几年音视频、直播应用呈现大爆发趋势,各类APP都会融入音视频相关技术,而其中美颜AR特效技术更是在各大平台掀起各类现象级的流行。随着
7月14日,江西公司黄金埠电厂余干县江埠乡80MW渔光互补光伏EPC总承包项目(光伏区)公开招标项目招标公告,招标公告显示,总装机容量80MW。本
坐拥长沙十几家金店他每天只干这件事
有投资者在投资者互动平台提问:纳离子电池是不是主要用于储能?科翔股份(300903 SZ)1月16日在投资者互动平台表示,钠离子电池可应用于储能、
中新网北京1月16日电(记者黄钰钦)中国外交部发言人汪文斌16日主持例行记者会。有记者提问:日前,美日外长、防长举行“2+2”会谈后发表联合声
三孔等文物景区门票优惠政策1、60周岁以上(含60周岁)老年人免费参观景区(凭本人身份证无需换票,凭老年证需换票)。2、现役军人、军队离退
2023年1月13日超声电子融资余额4 37亿元,创近一年新低
乐居财经邓如菲1月13日,浙江科峰有机硅股份有限公司(以下简称“科峰股份”)披露首次公开发行股票并在创业板上市招股说明书(申报稿)。科峰
看文章听音乐是种享受,想听什么留言告知(都是付费无损包)按照字面的意思“机皇”自然就是指“一台手机直接站在巅峰的位置”。所以既然一台
为什么现在患有抑郁症的人越来越多?究竟和什么有关?很多人毫不在意,其实对于这种疾病我们不可疏忽大意,下面我们来揭秘一下患抑郁症的原因
小米小爱触屏音箱京东年货价格仅219元!支持白条12期息费9折优惠!小米小爱触屏音箱搭载了一枚1 5英寸的全频段扬声器。这款音箱搭载了一枚1 5
据北京证监局网站13日披露,对国美电器有限公司、丁江宁采取出具警示函措施。北京证监局网站截图 北京证监局指出,经查,国美电器有限公司
【环球网科技综合报道】日前,随着多家在线旅游平台数据的相继发布,2023年春节出游的预订进入高峰,长线游加速复苏并有望重新回归消费主导成
中国白银今天的价格(2023年1月13日)
行长就是拿来用的!
中新社北京1月12日电圣地亚哥消息:据路透社报道,智利当局11日表示,当地时间10日,智利主要海港圣安东尼奥港口发生一起
1 宝可梦PTCG成为热门盗窃目标Nintendosoup消息,一份新的报告披露了一系列针对日本东京交易卡商店的入室盗窃案,其中大部分涉及宝可梦PTCG卡
有以下情形之一的,随时可以起诉主张变更抚养权:(1)与子女共同生活的一方因患严重疾病或因伤残无力继续抚养子女的;(2)与子女共同生活的一方不
金属和煤炭价格有所上涨,其中有色金属冶炼和压延加工业价格上涨1 1%,黑色金属冶炼和压延加工业价格上涨0 4%;煤炭开采和洗选业价格上涨0 8%
2023年1月11日晚中航电测(行情300114,诊股)发布公告,正在筹划发行股份向航空工业集团购买成飞集团100%股权。成飞集团是我国航空武器装备研制生产和出
根据市场公开信息整理,和远气体(002971)于1月13日将有5297 85万股限售股份解禁上市,为公司首发原股东限售股份,占公司总股本33 11%。本次
盐湖股份:关于公司收购子公司少数股东股权的公告
智通财经APP获悉,乐享集团温和走强,午盘初升约6%。公司拟以平均每股不超过3 14港元回购4000万股股份,用作股份奖励计划。机构指,依托TikTok
文 吴明辉从“独善其身”向“兼济天下”迈进2020年2月,酒业老兵朱伟任职贵州醇董事长、总经理,并在次月提出十年将贵
记得点击 "欢少的成长之路 ",设为星标⭐后台点击【联系我】,申请加入优质技术学习社群大家好,我是Leo。好久没有输出技术理论了,实在是忙。
Copyright 2015-2022 热讯酒业网 版权所有 备案号:豫ICP备20005723号-6 联系邮箱:29 59 11 57 8@qq.com