Vulkan 网格着色器密切镜像 Direct3D 12 功能

Khronos Group 及其 Vulkan 工作组一直致力于网格着色器的跨供应商扩展,类似于 Direct3D 12 和 NVIDIA 的 VK_NV_mesh_shader 扩展已经提供的功能。今天详细介绍了有关即将推出的 Vulkan 网格着色器支持的更多细节。

众所周知,Vulkan 工作组正在为 Vulkan API 寻求跨供应商的网格着色器扩展,因为 AMD RDNA2 GPU 和英特尔 Arc“Alchemist”GPU 也为网格着色器提供了必要的支持,紧随 NVIDIA 在该领域的领先地位。网格着色器将顶点和图元处理结合起来,作为对图形渲染管线的根本性改变。但是关于尚未发布的 Vulkan API 扩展的细节并不多见。虽然我们已经看到来自 Intel 等公司的Mesa 开发人员致力于 Vulkan 网格着色器的准备工作,而 Valve 开发人员则为 Radeon“RADV”驱动程序做出了贡献。

Valve 的 Linux 图形驱动程序团队的 Timur Kristóf 今天能够公开确认有关 Vulkan 网格着色器支持的一些细节。最重要的是,Vulkan 网格着色器扩展将与 Direct3D 12 中可用的方法和功能非常相似。Timur 评论了公共GitHub 票:

我们在 Khronos 中达成一致,我们现在可以公开分享有关即将推出的跨供应商网格着色器扩展的一些信息(尽管我无法就何时发布做出任何承诺)。对于这个扩展,与 DirectX 12 的兼容性对我们来说非常重要,因此我们遵循相同的主要功能和限制。着色器编程模型也非常相似。简而言之:如果您可以使用 DirectX 网格着色器执行某些操作,那么您也可以在 Vulkan 中执行此操作。

有两个新的着色器阶段:网格着色器和任务着色器(可选,在 DirectX 中也称为放大着色器),可以替代当前的图形管道。新扩展将支持 3 维调度(而不是 NV_mesh_shader 中的 1D),并且网格着色器输出更像 DirectX 12(着色器必须首先声明输出顶点/基元的数量,类似于 SetMeshOutputCounts)。

– 两个新的着色器阶段都遵循类似计算的编程模型。
– 网格着色器将支持每个顶点和每个基元的输出属性。它们的输出由工作组合作生成,并由光栅化器直接使用。
– 任务着色器的主要目的是调度网格着色器工作组和一个可选的有效负载输出,其工作方式类似于共享内存。

如此接近 Direct3D 12 网格着色器设计将有利于跨 API 的可移植性,也有助于 VKD3D-Proton 之类的公司能够有效地将现代 Windows 游戏从 D3D12 映射到 Vulkan。

image.php_-54
Microsoft 对 DirectX 12 网格着色器的简单、高级概述。

不过,对于这个跨供应商的 Vulkan 网格着色器扩展预计何时公开,目前尚无评论。至少当它公开时,英特尔和 RADV Mesa Vulkan 驱动程序的支持应该不会太落后,而且据推测 NVIDIA 将在同一天推出测试版驱动程序。

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun173837.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2022年6月22日
下一篇 2022年6月22日

相关推荐