从Vulkanised 2025大会,看未来图形技术发展 --原创 from HuangRan@图形达人

今年有幸去剑桥Arm公司参加Vulkanised 2025大会,为期3天的会议、接近36个议题,来自于AMD、Nvidia、Arm、Samsung、Meta等大厂专家的分享,内容从生态到系统、从软件到GPU硬件、从Shading Language到底层驱动,涉及方方面面。接近200个人的会议室几乎坐满了这个世界上最懂图形的专家,有机会借此机会交换观点、关注未来图形技术发展几乎是每一个人来到这儿的目的。

1. Vulkan的发展
Vulkan从2016年推出1.0版本以来,已经经历了长达8-9年的发展。还深深记得在2016年,第一次尝试这个API的时候,我们在Android上的图库上做了从OpenGLES到Vulkan的切换,CPU的负载降低了近20%(通过CPU overhead减少),很明显在诸多场景里面(如缩略图)拿到了性能和功耗收益。但是,令人遗憾的是,最终没有商用,因为图形驱动对于Vulkan支持的稳定性还不足以支撑它的商用。
但是高性能、低负载的特性在当时的工作中让自己的内心里埋下了一个种子,相信Vulkan必然有朝一日会成为图形渲染的核心API,替代OpenGL/OpenGLES。

我们可以翻一翻过去图形API的发展历史:
在这里插入图片描述

OpenGLES当时为了移动端而从OpenGL API里面剥离出来,成为了一个子集进行单独演进。而随着移动端SoC能效的限制,OpenGLES的缺点逐渐显现,CPU overhead重、无法并行化等让性能不堪重负。
而自此,从AMD Mantle而衍生出来的Vulkan被Khronos接手,开始推进。自此,Vulkan在CPU低负载、并行提交指令等方面就盖上了标签。

2. Vulkanised大会是什么?关注什么?
Vulkanised大会自2018年开始举办,已经将近有7年的历史。从一开始只是某几个厂商的个位数参加,到今天发展到200人(还是因为在Arm举办,人数受限),能够看到其快速发展。过去几年主要在英国、美国、德国等地举办。
今年的赞助商如下:
在这里插入图片描述
覆盖了从桌面(Nvidia)到移动(Arm、Samsung、VeriSilicon),覆盖了从标准(Khronos)到生态(LunarG)的厂商。
而生态参与者就更广泛了:
在这里插入图片描述
我发现一个特点,中国厂商来参加的很少,Huawei作为其中重要的代表,能有幸参与并深度互动,是一件幸事。
更多的图形专家来这里主要为了社交,为了获取信息。图形这个圈子并不大,唯有和这个行业不断接触,才有机会走对路、不偏。比较有意思的还是这个Board Discussion的环节:

在这里插入图片描述
能够看到这个生态当前是谁在主导:自坐到右分别是Samsuang、AMD、Collabora、Nvidia、ARM的代表。我提了其中的一个问题(Multi GPU的支持),也引发了大家诸多的讨论,技术的交流没有边界。
在这里插入图片描述

3. Vulkan 1.4和未来发展
Vulkan当前已经发展到1.4版本,这个API版本是在上个月东京的Siggraph Asia上刚刚发布的,我们可以看到其Roadmap:
在这里插入图片描述
其中,每两年会产生一个新的Core版本,Roadmap代表孵化过程,牵引硬件,而Core代表稳定的API。
在新的Vulkan 1.4里面的特性,可以看到对于Dynamic Rendering、Multi-draw Indirect、Streaming Transfers等特性做了扩展,加强了对GPU driven的特性增强,并且移动端要求更高效的使用Tile,减少DDR吞吐等:
在这里插入图片描述
另外,一个新的变化就是过去Vulkan的碎片化非常之严重,而1.4开始尝试提升最低的硬件要求:
在这里插入图片描述
后面就是对Vulkan video的增强,除了过往的H.264、H.265支持外,增加了AV1支持:
在这里插入图片描述
而Shader这块增加了新的Slang语言,并HLSL使用了Spir-V作为中间IR表达。这就让微软的图形生态可以对接到Vulkan上:
在这里插入图片描述
不仅如此,随着AI的加持,Machine Learning也成为Vulkan支持的一部分,可以用于超分、降噪、神经表达纹理等:
在这里插入图片描述
4. 图形的3个维度
这次大会议题达36个之多,我做了一些总结,大概分为12类,如下:

  • Vulkan Roadmap:Ralph Potter的Vulkan Update,
  • Vulkan Machine Learning(ML):Matrix计算、Neural Networks、Neural Texture Compression
  • Vulkan Mobile:三星的Vulkan swapchain、Arm的ASR,Arm的最佳实践,Vulkan on Android、GPU调试
  • Vulkan Compute:引力波计算(Gravitational Waves )
  • Vulkan Shading Language(SL): SPIR-V(IREE、MLIR)、HLSL、Slang、
  • Vulkan 驱动:lavapipe的软件渲染
  • Vulkan Saftely:Arm主讲
  • Vulkan Ray Tracing:Meta的和Nvidia(移动端和Desktop端)
  • Vulkan Video:L3Harris-ForcesX的.net8 SilK.net and Avalonia,Meta的Ycbcr,Nvidia的new video extension,Igalia的Vulkan video
  • Vulkan 生态:Blender切VK,Vulkan游戏with rust开发,Mesa Lavapipe支持Video
  • Vulkan 特性:Igalia的Device-Generated commands,Saarland大学的subgroup使用,AAD使用color volume(HDR)
  • Vulkan 基础:LunarG的Karen的SDK以及Ecosystem,GPUhang,Debug GPU,Vk-Bootstrap,VK renderer;Arm的libGPUyader

从我自身的理解来看,Vulkan涉及3个维度的内容,图示如下:
在这里插入图片描述
这3个维度分别是:
1) 特性维度:包括渲染、计算、视频、建模等
2) 软硬件全栈维度:包括自底向上的硬件、驱动、系统、API、应用、生态等
3) 算力维度:包括移动端、PC端、Server端

这恰恰体现了图形系统之复杂,真正掌握图形技术,你不但要懂硬件和驱动,还要具备OS图形框架知识,而最重要的应用和生态到底怎么使用。而且图形渲染仅仅是图形领域的一个点,还有计算、视频和建模(神经网络),同时贯穿不同算力的SoC,包括移动端、PC端和Server端。

篇幅有限,我想我们重点介绍几块:ML和神经网络渲染、Shading Language、移动端变化、以及生态四个部分:

4.1 Machine Learning和Neural Rendering

我们首先看看Machine Learning和Neural Rendering,这块随着AI的快速发展让它成为热点。为什么这么说呢?因为当前无论是超分、插帧、RayTracing降噪、纹理压缩等,使用Neural Rendering的方法,比起传统GPU的渲染会更加快速完成。尤其是Nvidia在这块的带动效果非常明显,这次Nvidia带来了3个议题,包括Matrix计算、纹理压缩和神经网络渲染。我们快速一探究竟:
首先是Matrix计算:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过Tensor的表达和神经网络计算,可以比传统GPU提升更快的访存和计算效率。
其次是纹理压缩,这块Nvidia今年release了一篇文章介绍这块,叫做NTC,引入了神经网络的纹理压缩方案:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后是渲染shader中使用Neural Networks,借助新的Nvidia的Slang语言,可以达成高效计算与渲染,其中也包括了对于Nerf的支持:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因此,对于未来的渲染来说,无论是光照、材质、纹理都可以进行神经网络的加速计算。

4.2 Shading Language

对于Shading Language而言,就不得不提Mesa和LLVM。从2007年至2016年,我几乎用去了8年时间在图形驱动的工作之中,无论是KMS/UMS、CRTC的Display使能、DRM的渲染、还是Mesa 3D的支持都做过大量的Radeon驱动开发,也有幸进入到了图形的大门(尤其是自己非常庆幸从硬件和驱动入门图形学),可以这样说,除了操作系统,图形驱动是最复杂的软件系统。

而LLVM是Mesa的编译Shader的模块,包括前端和后端,重点会讲描述为高级语言的Shader Language编译成IR,最终生成ISA的binary,用于GPU执行。

而Spir-V就是一种IR表达。随着Machine Learning和神经网络渲染的加入,Shading language迎来了新的变化:
1) LLVM MLIR的支持可以更好的使能多计算资源(如多GPU等)
2) 增加了新的Slang,以连接传统渲染和神经网络渲染
3) 支持了微软的HLSL,让HLSL可以转换为Spir-V

首先看MLIR的支持:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过MLIR->Spir-V的过程,可以更好地使能更多的GPU硬件来做神经网络计算,尤其是对Liama3和Diffusion模型可以支持的更好。
我们再来看Slang:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个分享是最有意思的一个分享,也解答了我的很多疑惑,关于传统渲染和神经网络渲染,Slang以及Slangpy做了最好的桥梁,支持了2D/3D Gaussian Splatting。
最后看下微软的HLSL:
在这里插入图片描述
在这里插入图片描述
非常有意思的是,支持HLSL这件事情,Google也在参与,我想更多的是其考虑未来微软DirectX的API生态如何到Android系统上的支持,毕竟苹果做了Game Porting Toolkit,移植了大量的微软游戏生态。

4.3 移动端变化
说起移动端变化,这次Vulkanised大会的3个分享给我留下了很深的印象,也能看到Vulkan移动端的生态在逐渐成熟。这3个分享分别是ARM的ASR超分、Google的Vulkan策略以及Samsung的图形工具链条。

移动端其实在整个发展过程中,在不断地吸收Desktop和Server的发展,比如Ray Tracing,包括最近Meta也在搞移动端的Ray Tracing。包括插帧/超分,如苹果的MetalFX,这次ARM推出了自己的ASR超分技术。
而Google的Vulkan策略收到其多GPU vendor的影响,并不是很快。但是,这次其分享的内容给出了非常明确的信号,Android今后不再有GLES driver,而统一都走Vulkan。
最让我震撼的还是Samsung和Google做的一站式、端到端图形调优工具,借助于Perfetto+GFXReconstruct API能力,可以实现从粗粒度到细粒度的调试,对标Xcode,这一点非常值得借鉴。由于篇幅原因,我这里仅仅贴一些图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.4 生态进展

说到生态,不得不又说回到之前2016年做的那件事情。由于驱动不稳定,没能让Vulkan 1.0上线。不过,就在去年整个鸿蒙切到了Vulkan,无论是2D、3D渲染,都走到了Vulkan,非常地不容易。今天回首去看,仍然十分感概于这么多年的努力,让这件事情发生,为鸿蒙的图形栈构建了最为重要的根基。这件事就连Google到今天也没能做到。
而这次Vulkanised大会,非常开心地看到了Vulkan生态的快速推进,尤其是两个议题,非常有意思:
1) Blender支持Vulkan
2) 迷你世界游戏使用Rust+Vulkan支持Windows和MacOS
Blender支持Vulkan标志了生态的创作工具真正使用Vulkan在进行渲染,也说明Vulkan的生态真正影响了App厂商下决心去使用。而Rust+Vulkan改写整个迷你世界,则也间接证明了Vulkan在游戏生态的发展。
附上一些内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5. 图形技术未来之展望

限于篇幅,确实有太多内容都没有展现出来,这次大会的收获远超预期,虽然伴随着非常疲惫的身体,但是内心对于图形技术发展的趋势愈发清晰,也让我有强烈的意愿做了这篇文章的分享,可以让更多地图形领域工作者对于未来图形之发展有所把握。

未来图形不仅仅限于渲染,在计算(参考CUDA)和神经网络渲染(参考Slang)都会快速发展,而且会“渲染+计算+神经网络”深度结合。这不但对GPU硬件,尤其是移动端GPU硬件提出了新的要求,而且在Shading language、驱动(尤其是Mesa、LLVM)、硬件开发的VK API上都有冲击,要及早地去迎接这个变化。

而具体到移动端,DDR的bandwidth依然是大问题,所以如何更好地使用Tile、如何把渲染+计算+网络的流水做的更加紧密协作、如何利用GPU Driven减少CPU overhead都是重要的演进方向。

要想做好移动端的图形,要真正打通应用-OS-驱动-硬件的全链路,发挥出端到端控制的优势。

而幸好,鸿蒙图形栈已经具备了雏形,切换了Vulkan底座,构建了完整的图形管线,它正在向正确的方向上快速、稳健地迈进…

此压缩包包含了本毕业设计项目的完整内容,具体包括源代码、毕业论文以及演示PPT模板。 开发语言:Java 框架:SSM(Spring、Spring MVC、MyBatis) JDK版本:JDK 1.8 或以上 开发工具:Eclipse 或 IntelliJ IDEA Maven版本:Maven 3.3 或以上 数据库:MySQL 5.7 或以上 项目配置完成后即可运行,若需添加额外功能,可根据需求自行扩展。 运行条件 确保已安装 JDK 1.8 或更高版本,并正确配置 Java 环境变量。 使用 Eclipse 或 IntelliJ IDEA 打开项目,导入 Maven 依赖,确保依赖包下载完成。 配置数据库环境,确保 MySQL 服务正常运行,并导入项目中提供的数据库脚本。 在 IDE 中启动项目,确认所有服务正常运行。 主要功能简述: 请假审批流程:系统支持请假申请的逐级审批,包括班主任审批和院系领导审批(针对超过三天的请假)。学生可以随时查看请假申请的审批进展情况。 请假记录管理:系统记录学生的所有请假记录,包括请假时间、原因、审批状态及审批意见等,供学生和审批人员查询。 学生在线请假:学生可以通过系统在线填写请假申请,包括请假的起止日期和请假原因,并提交给班主任审批。超过三天的请假需经班主任审批后,再由院系领导审批。 出勤信息记录:任课老师可以在线记录学生的上课出勤情况,包括迟到、早退、旷课和请假等状态。 出勤信息查询:学生、任课老师、班主任、院系领导和学校领导均可根据权限查看不同范围的学生上课出勤信息。学生可以查看自己所有学年的出勤信息,任课老师可以查看所教班级的出勤信息,班主任和院系领导可以查看本班或本院系的出勤信息,学校领导可以查看全校的出勤信息。 出勤统计与分析:系统提供出勤统计功能,可以按班级、学期等条件统计学生的出勤情况,帮助管理人员了解学生的出勤状况。 用户管理:系统管理员负责管理所有用户信息,包括学生、任课老师、班主任、院系领导和学校领导的账号创建、权限分配等。 数据维护:管理员可以动态更新和维护系统所需的数据,如学生信息、课程安排、学年安排等,确保系统的正常运行。 系统配置:管理员可以对系统进行配置,如设置数据库连接参数、调整系统参数等,以满足不同的使用需求。 身份验证:系统采用用户名和密码进行身份验证,确保只有授权用户才能访问系统。不同用户类型(学生、任课老师、班主任、院系领导、学校领导、系统管理员)具有不同的操作权限。 权限控制:系统根据用户类型分配不同的操作权限,确保用户只能访问和操作其权限范围内的功能和数据。 数据安全:系统采取多种措施保障数据安全,如数据库加密、访问控制等,防止数据泄露和非法访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值