系统极客一直在努力
专注操作系统及软件使用技能

DirectX 引入全新「高级着色器分发」技术

DirectX

DirectX 团队带来了一项能彻底改变 PC 游戏体验的重量级新功能——「高级着色器分发」(Advanced Shader Delivery)。它瞄准的,是几乎所有 PC 玩家都遇到过的老毛病:第一次打开游戏要等很久,进入后还可能莫名变得「一卡一卡」🥲。

这个问题的根源其实很简单:第一次运行游戏时,需要「编译图形着色器」,并把它们缓存起来,以备后续使用。细节方面,如果你感兴趣,可以去看看 Epic Games 的文章《游戏引擎与着色器卡顿问题》,里面讲得很清楚。

这次,DirectX 团队携手 Xbox 和 AMD 等多个团队,实现了一项重要突破:对这些着色器数据进行了「云端预编译」。这意味着,当你通过 Xbox PC 应用下载某款游戏时,预编译好的着色器也会一并下到本地。这样一来,你不仅可以更快地进入游戏,还能彻底告别因着色器编译导致的性能抖动和画面卡顿。

举个例子:DirectX 工程团队在黑曜石娱乐的《宣誓》中实测发现——游戏启动时间缩短了足足 85%!换句话说,你几乎可以立刻进入到游戏世界,而不是干等着编译和加载。

DirectX 团队计划与各大游戏厂商深度合作,把这项技术直接集成到主流游戏引擎中,确保游戏在首发当天,就能立即享受到新功能加成。

「高级着色器分发」工作原理

游戏会通过「着色器」程序来与 GPU 互动,它们负责处理光照、纹理、物理效果等关键视觉元素。但 GPU 在真正使用这些着色器之前,它们必须先以一种「中间形态」交给 GPU 驱动,再由驱动将其编译成 GPU 可以识别的格式。

问题在于,编译后的着色器和具体的游戏、GPU 型号,甚至是驱动版本都有「强绑定」关系,想要提前编译非常困难。以往最常见的处理方式有 2 种:

  • 要么在游戏启动时,通过加载界面进行编译;
  • 要么在游戏过程中「实时」编译,这也是最影响体验的卡顿元凶。

编译完成后,着色器会被缓存在本地。一旦你更新了驱动,缓存就会失效,所有着色器又得重新编译 😂。

为了彻底解决这个问题,DirectX 团队提出了一种全新方案:

  1. 首先,从游戏中收集着色器数据,并打包成一种全新的标准化格式——「状态对象数据库」(State Object Database),简称 SODB;
  2. 接着,与核心硬件合作伙伴协作,将「着色器编译器」从图形驱动中「剥离」出来;
  3. 最后,在云端将游戏数据(SODB)与独立编译器结合,生成「预编译着色器数据库」(Precompiled Shader Database),简称 PSDB。
「高级着色器分发」工作原理
「高级着色器分发」工作原理

这个 PSDB 可以通过 Xbox 商店随游戏本体一起分发,作为「本地着色器缓存」的补充。这样一来:

  • 当你第一次运行游戏时,系统就会发现所需的着色器已经提前准备好,可以直接跳过本地编译步骤。
  • 而且,即使你之后更新了驱动程序,系统也会自动检测并同步更新这份数据。

简单来说,就是 DirectX 团队把原本需要每台设备本地完成的高负载编译工作搬到了云端,再通过游戏下载直接交付给玩家。整个过程就像「提前帮你烤好披萨,回家直接吃」。

赞(0)
分享到

评论 抢沙发