Khronos发布Vulkan光线追踪最终规范

今天,Khronos®发布了Vulkan®,GLSL和SPIR-V扩展规范集的最终版本,将光线跟踪无缝集成到现有的Vulkan框架中。这是一个重要的里程碑,因为它是业界第一个开放的、跨厂商的、跨平台的光线追踪加速标准,并且可以使用现有的GPU计算或专用的光线追踪核心进行部署。对于在DirectX 12中使用DirectX光线追踪(DXR)的人来说,Vulkan光线追踪将是熟悉的,但也引入了高级功能,例如负载平衡光线追踪设置操作到主机CPU的能力。虽然光线追踪将首先部署在桌面系统上,但这些Vulkan扩展已经被设计为支持并鼓励光线追踪也部署在移动设备上。

这些扩展最初于2020年3月作为临时版本发布。从那时起(见图1),我们已经收到并整合了来自硬件供应商和软件开发人员的反馈,包括Khronos内部和更广泛的行业,但是API的整体形状和提供的功能基本上没有改变。感谢所有审查和使用临时扩展的人,特别是那些提供反馈的人!

今天发布的扩展规范只是Vulkan光线追踪的开始。在接下来的几天和几周内,额外的生态系统组件,如着色器工具链和验证层,将更新为支持光线追踪功能,以确保开发人员可以轻松地在他们的应用程序中使用这些扩展。这些生态系统更新的进展可以在GitHub上跟踪。这将在12月中旬发布支持Khronos Vulkan光线追踪的Vulkan SDK(1.2.162.0或更高版本)时达到高潮。

这篇文章将重点介绍Vulkan光线追踪扩展的临时版本和最终版本之间最重要的区别,并解释这些变化背后的一些原因。

给我看看眼镜!
Vulkan光线追踪扩展集提供的整体功能自其临时版本以来没有改变。今天发布的最后一组扩展是:

扩展结构
最明显的变化是临时的VK_KHR_ray_tracing扩展被分成了3个扩展:

  • VK_KHR_acceleration_structure——加快结构建设和管理
  • VK_KHR_ray_tracing_pipeline-用于光线追踪着色器阶段和管道,以及
  • VK_KHR_ray_query-为所有着色器阶段提供光线查询特性。

我们收到的反馈是,一些市场希望能够在没有射线管道的情况下支持射线查询,为了避免重复和人为依赖,我们对原始扩展进行了细分。实现者可以选择支持VK_KHR_ray_tracing_pipeline、VK_KHR_ray_query,或者两者都支持,这取决于市场需求。这两个扩展都依赖于VK_KHR_acceleration_structure扩展来为加速结构管理提供一个公共基础。主要的桌面供应商仍然致力于支持射线管道和射线查询。有关对可选特性的支持和其他市场的支持的具体情况,请与各个供应商联系。

Vulkan光线跟踪扩展不再被标记为临时的,因此五个扩展的扩展接口现在在主要的vulkan_core.h头文件中定义,而不是临时的vulkan_beta.h,用户不再需要#define VK_ENABLE_BETA_EXTENSIONS来启用Vulkan光线跟踪功能。

扩展的依赖关系也发生了变化。Vulkan 1.1和SPIR-V 1.4现在是必需的。VK_KHR_acceleration_structure需要Vulkan 1.1, VK_EXT_descriptor_indexing, VK_KHR_buffer_device_address和VK_KHR_deferred_host_operations。我们意识到,一长串的扩展依赖项很烦人,理想情况下,我们希望只需要Vulkan 1.2,但不是所有的平台都支持Vulkan 1.2,我们不想为采用光线追踪功能增加任何人为的障碍。如果得到所有目标市场的支持,应用程序可以直接针对Vulkan 1.2进行简化。我们还考虑不将VK_KHR_deferred_host_operations作为显式依赖项,但是对管道创建的更改需要保留它。我们将VK_KHR_pipeline_library作为VK_KHR_ray_tracing_pipeline的软需求,而不是严格的需求,因此应用程序只需要在实际使用它时启用它。除了VK_KHR_acceleration_structure之外,VK_KHR_ray_tracing_pipeline和VK_KHR_ray_query都至少需要SPIR-V 1.4,因为在该版本中添加了入口点需求的更改。SPIR-V 1.5也可以用于Vulkan 1.2实现。

在功能方面,以下是所有实现的强制要求。

VK_KHR_acceleration_structure要求:

  • VK_KHR_deferred_host_operations
  • accelerationStructure
  • descriptorBindingAccelerationStructureUpdateAfterBind
  • 所需的所有功能descriptorIndexing特性(如果支持Vulkan 1.2)或VK_EXT_descriptor_indexing扩展和
  • bufferDeviceAddress源自Vulkan 1.2或theVK_KHR_buffer_device_address

支持的实现VK_KHR_ray_tracing_pipeline要求:

  • VK_KHR_acceleration_structure
  • rayTracingPipeline
  • rayTracingPipelineTraceRaysIndirect
  • rayTraversalPrimitiveCulling,如果VK_KHR_ray_query也支持,和
  • VK_KHR_pipeline_library

支持的实现VK_KHR_ray_query要求:

  • VK_KHR_acceleration_structure,
  • rayQuery

此外,还有一些可选用扩展定义的功能。

VK_KHR_acceleration_structure这些都是:

  • accelerationStructureCaptureReplay
  • accelerationStructureIndirectBuild,
  • accelerationStructureHostCommands

VK_KHR_ray_tracing_pipeline这些都是:

  • rayTracingPipelineShaderGroupHandleCaptureReplay
  • rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
  • rayTraversalPrimitiveCulling,如果VK_KHR_ray_query不支持。

欲了解更多信息,请访问这里

最新头条

关于理查德·艾兹伍德 2188篇乌克兰捷克预测文章
Richard aka PapaShango来自英国。他对计算机感兴趣已经有12年多了。他是一个狂热的游戏玩家,他也对硬件方面的东西感兴趣。Richard自2004年初以来一直是Funky Kit团队的成员nba季后赛欧宝直播,在8年的时间里为Funky Kit贡献了超过8800个小时!…