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

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

1647246211-fac4ef5554f69012fe38d2f1d4e245a6

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

什么是著色器?

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

1649921637-b0bb4d59982bc2a763adb4d231a17a4e

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

什么是著色器编译?

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

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

在某些游戏中,后台进行的著色器编译工作会干扰到游戏本身,导致玩家有感的卡顿,这可以说是电脑太过努力地编译著色器而使得某些游戏无法顺利运行。目前有些开发者致力于最佳化编译过程使之对游戏效能几乎没有影响,但有些开发者在游戏中大量使用着色器,使得电脑在编译时工作更加吃重。
1647246027-2de40e0d504f583cda7465979f958a98

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

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

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

1661666978-690c3da9da667e4a00f455ff859637b0

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

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

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

原创文章,作者:哦八卦,如若转载,请注明出处:https://www.obagua.com/13333.html

(0)
上一篇 2022年11月13日 下午1:08
下一篇 2022年11月22日 下午8:36

相关推荐