尽管电脑很强游戏还是卡顿? 原来是着色器编译搞得鬼

着色器编译问题在电脑游戏里面越来越严重

有时候你会发现,无论电脑多强大或是设定得再理想,在玩有些游戏时好像还是有点卡顿,这是怎么一回事? 先别急着订购最新处理器、显卡,因为这问题是由于被称为「着色器编译」的过程所引起的,而这问题在计算机游戏领域中日益严重。 由于每台电脑的显卡都不同,因此游戏需要着色器编译才能在不同品牌、型号的显卡上运行,只是这编译的过程中可能就会有点波折。
Windows 11 22H2 更新使部分 Nvidia 显卡游戏时出现问题 - 电脑王阿达

尽管电脑很强游戏还是卡顿? 原来是着色器编译搞得鬼

什么是着色器?

着色器是用来帮助确认渲染图形各种细节的电脑程序。 例如,像素着色引擎(Pixel shaders)用来计算像素的属性,这包括该像素的颜色、亮度、反射率和透明度等。 如果你想让游戏中的某个物件看起来有湿润的外观,你可以使用特殊着色器来实现,不需要亲力亲为手工打造。
Dell G3223D & G3223Q 电竞屏幕开箱 - 15

着色器让现代的GPU更加灵活,这些GPU可以运行用着色器编程语言表达的任何内容,取代了执行图形运算硬接入芯片的旧有固定管道(Fixed-Function Pipeline)技术。

什么是着色器编译?

「编译」是一个计算机术语,指的是将工程师编写的代码转换后,让运行乡端软件的特定处理器得以理解并执行,举例来说,你可以编译代码在 Intel 处利器或苹果芯片上运行。 同样的事情对于GPU也是必要的,着色器代码必须编译成在特定GPU品牌和型号上运作,如果更换GPU、更新驱动或游戏收到更新时,就必须对着色器重新编译。 简单来说,你可以将各品牌、型号的 GPU 想象成不同国籍的人,将你说的语言翻译成他们能懂的语种,当你有补充说明时,就得重新翻译一次让它们更清楚你的意思。

为什么有些电脑游戏会出现着色器编译卡顿?

在某些游戏中,后台进行的着色器编译工作会干扰到游戏本身,导致玩家有感的卡顿,这可以说是电脑太过努力地编译着色器而使得某些游戏无法顺利运行。 目前有些开发者致力于优化编译过程使之对游戏效能几乎没有影响,但有些开发者在游戏中大量使用着色器,使得电脑在编译时工作更加吃重。
Windows 11 22H2 更新使部分 Nvidia 显卡游戏时出现问题 - 电脑王阿达

编译卡顿的情况在 Unreal Engine 4 构建的游戏中尤其严重。 具体来说,在DirectX 12下运行游戏时,这些卡顿会成为一个问题,这是因为DirectX 12改变了着色器编译的运作方式,将更多的控制权交给了开发人员。 同是,这也表示开发者可能没有使用最新和最进步的 DirectX 版本确认优化着色器编译的方式。

为什么游戏主机上就不会有着色器编译卡顿的问题?

着色器编译问题在 PS5 和 Xbox Series X|S 等游戏中完全不存在。 这仅仅是因为游戏主机内部的硬件是固定的,开发者只需要针对特定项目来预编译所有着色器,无需在本机系统上因为每个玩家硬件不同而分别编译。

Valve 证实 Steam Deck 掌上型 PC 将于未来推出效能更加强大且开放的次世代版 - 电脑王阿达

对于着色器编译卡顿问题,你能做些什么?

不幸的是,大多数关于着色器编译卡顿必须由开发者来修复,好消息随着游戏开发工具的进步会有所改善。 像 Unreal Engine 5.1 中可能就包含有自动化功能,可以帮助开发者暂存而部会对效能产生那么严重的影响。 对于着色器编译卡顿你能做的相当有限,但其中一些可能会稍微有点帮助:

  • 如果游戏允许你预先编译着色器,请同意它,这可能需要一点时间,但在进入游戏体验后将无卡顿现象发生。
  • 延后GPU驱动程序更新,直到你完成当前游戏进度,以防再次触发编译。
  • 当游戏中开始卡顿时,请暂停游戏并等待一会儿让它执行完成再继续。
  • 玩DirectX 11而不是DirectX 12版本的游戏,通常着色器卡顿会减少或不存在,但也会失去DX12的某些功能。
(0)
打赏 微信扫一扫 微信扫一扫

相关推荐

发表评论

登录后才能评论