DirectX12Ultimate为PC游戏带来XboxSeriesX功能

知识动态2021-12-18 11:21:19
导读 今天,微软宣布了其游戏和多媒体 API 平台 DirectX 的新版本。新版本 DirectX 12 Ultimate 在很大程度上将 Windows PC 与即将推

今天,微软宣布了其游戏和多媒体 API 平台 DirectX 的新版本。新版本 DirectX 12 Ultimate 在很大程度上将 Windows PC 与即将推出的Xbox Series X 平台统一起来,为支持显卡的 Windows 游戏玩家提供该平台新的精确渲染功能。

许多新功能更多地与开发的软件方面有关,而不是与硬件有关。新的 DirectX 12 Ultimate API 调用不仅可以访问新的硬件功能,还提供对现有硬件功能和资源的更深入、更低级别和可能更高效的访问。

目前,新功能主要只针对 Nvidia 卡,“完全支持 GeForce RTX”——你看到的幻灯片实际上来自 Nvidia 本身,而不是微软。与此同时,AMD宣布其即将推出的一系列 RDNA 2 GPU 将“全面支持”DirectX 12 Ultimate API——但不支持任何前几代 AMD 卡。(AMD 借此机会提醒游戏玩家,微软的 Xbox Series X 和索尼的 PlayStation 5 游戏机都采用相同的 RDNA 2 架构。)

一些新的调用让人想起 AMD 在 Radeon 驱动程序中独立完成的工作。例如,我们认为可变速率着色类似于 AMD 的Radeon Boost 系统,它在快速平移期间动态降低帧分辨率。虽然这些功能肯定不是一回事,但它们在概念上非常相似,我们知道 AMD 至少一直在沿着类似的思路思考。

这段 Nvidia 制作的视频提供了 DirectX 12 Ultimate 中添加的新功能的可视化示例。

DirectX 光线追踪

DirectX 光线追踪,又名 DXR,并不是全新的——DXR1.0 是在两年前推出的。但是,DirectX 12 Ultimate 在DXR1.1版本控制方案下引入了几个新功能。DXR1.1 的所有功能都不需要新硬件——现有的支持光线追踪的 GPU 只需要驱动程序支持即可启用它们。

目前,只有 Nvidia 提供具有硬件光线追踪功能的面向客户的 PC 显卡。然而,Xbox Series X 在其定制的 Radeon GPU 硬件上提供光线追踪——AMD 首席执行官 Lisa Su 表示,预计在 1 月份的 CES2020 上,“随着我们经历 2020 年”,独立的 Radeon 显卡将支持光线追踪。

内联光线追踪

内联光线追踪是一种替代 API,与 DXR1.0 的基于动态着色器的光线追踪相比,它允许开发人员对光线追踪管道进行较低级别的访问。内联光线追踪不是取代动态着色器光线追踪,而是作为替代模型出现,它可以让开发人员进行廉价的光线追踪调用,而无需承担动态着色器调用的全部重量。示例包括受约束的阴影计算、来自不支持动态着色器光线的着色器的查询或简单的递归光线。

关于何时内联光线追踪比动态更合适,没有简单的答案。开发人员需要通过试验找出两种工具集使用之间的最佳平衡。

DispatchRays() 通过 ExecuteIndirect()

在 GPU 上运行的着色器现在可以生成 DispatchRays() 调用列表,包括它们的各个参数。这可以显着减少准备并立即在 GPU 上生成光线跟踪工作的场景的延迟,因为它消除了到 CPU 和返回的往返。

通过 AddToStateObject() 增长状态对象

在 DXR1.0 下,如果开发人员想要向现有光线追踪管道添加新的着色器,他们需要使用额外的着色器实例化一个全新的管道,将现有着色器与新的着色器一起复制到新管道中。这要求系统在实例化新管道时解析和验证现有着色器以及新着色器。

AddToStateObject() 通过做它听起来像的事情来消除这种浪费:允许开发人员扩展现有的光线跟踪管道,只需要解析和验证新的着色器。这里的效率提升应该是显而易见的:需要添加一个新着色器的 1,000 个着色器管道现在只需要验证一个着色器,而不是 1,001 个。

光线追踪着色器中的 GeometryIndex()

GeometryIndex() 允许着色器区分底层加速结构中的几何图形,而无需更改每个几何图形的着色器记录中的数据。换句话说,底层加速结构中的所有几何图形现在可以共享相同的着色器记录。需要时,着色器可以使用 GeometryIndex() 索引到应用程序自己的数据结构中。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。