跳到主要内容

Khronos博客

HLSL作为一种一流的Vulkan着色语言

Vulkan 1.2深化HLSL支持

自几年前推出以来,HLSL在Vulkan的支持已经取得了长足进步,现在它已经达到了关键的成熟点,赢得了令人垂涎的“生产就绪”标签。Vulkan中的HLSL是通过将SPIR-V后端集成到DXC中实现的,DXC是微软的开源HLSL编译器(下图1中的包围部分),并且在Khronos的glslang编译器中添加了HLSL支持。HLSL是微软DirectX的官方着色语言,被游戏和3D应用程序广泛使用。对于许多AAA游戏开发人员来说,HLSL是首选语言,Khronos收到了许多开发人员的请求,要求在Vulkan中支持HLSL。现在,由于微软开源了HLSL编译器,Vulkan社区能够与微软合作,使Vulkan-HLSL支持与Khronos自己的GLSL着色语言一起成为一个经验证的选择。

图1 Microsoft开源DXC编译器现在支持
Vulkan和DX12后端代码生成

对于那些使用SPIR-V后端早期迭代的人来说,悬而未决的资源引用和变量传递问题现在就像是一个遥远的记忆。根据Vulkan社区的反馈,谷歌、LunarG、NVIDIA和Valve通过向Vulkan's HLSL着色器编译器添加SPIR-V合法化,努力解决这些问题和其他问题。HLSL是一种相当宽松的语言,将HLSL直接翻译为SPIR-V有时会生成非法的SPIR-V.使用图1中的SPIR-V工具步骤进行合法化的过程应用了纠正转换,以使SPIR-V对Vulkan有效。虽然下图描述了DXC的流程,但合法化工具也可以用于使用glslang编译器进行HLSL编译。回顾过去,SPIR-V合法化是为Vulkan可靠地将HLSL编译为SPIR-V的关键。当然,这并不意味着事情已经放缓;在整个生态系统中,继续努力改善Vulkan的HLSL。Vulkan1.2为Vulkan上的HLSL带来了大量令人激动的新功能,稍后将详细介绍。

尽管有了不断的改进,Vulkan上的HLSL在过去一年左右的时间里已经为开发人员做好了使用准备。开发人员一直在努力将Vulkan-HLSL编译器和工具整合到他们的生产线中,并且没有比在AAA Vulka游戏中采用HLSL-on-Vulkan更能证明HLSL的生产就绪性了。除了现有的AAA级游戏外,谷歌的Stadia还推出了一系列AAA级游戏,这些游戏在《Vulkan:Destiny 2》、《Red Dead Redemption II》、《刺客信条奥德赛》和《古墓丽影》系列中使用了HLSL。看到一些最大的AAA游戏在Vulkan上使用HLSL来呈现其内容,真是令人惊讶。

Vulkan 1.2标志着Vulkan's发展史上又一个重要的进步,它提供了增强HLSL支持的新功能,包括支持SPIR-V 1.4/1.5、更灵活的缓冲区布局、Vulkan-内存模型以及对更窄数据类型的子组操作支持。这些新功能的添加有助于确保HLSL是一流的Vulkan着色语言。

展望未来,Vulkan工作组正在研究光线跟踪技术。虽然光线跟踪的跨供应商解决方案仍在讨论中,但NVIDIA已在DXC中为此奠定了基础,添加了功能,以使用HLSL编写的着色器瞄准VKRay Vulkan光线跟踪扩展。这项工作最终将用于使HLSL能够在多个平台上访问Vulkan中的跨供应商光线跟踪。

展望未来,Khronos热烈欢迎继续与Microsoft合作,使Vulkan开发人员能够选择使用HLSL,使HLSL成为业界最广泛使用的着色语言之一。

评论