我相信不少玩家在玩游戏时总会遇到这样的问题:明明我电脑的配置已经足够高了,但玩游戏时还是会遇到一卡一卡的情况,这是怎么一回事呢?遇到这个问题大家不用急着排查故障,首先观看一下游戏上方是否有“着色器正在编译中”这行字,或者这就是导致你游戏卡顿的罪魁祸首了。
由于大家的硬件品牌以及配置都有所不同,因此游戏的开发者需要确保自己的游戏可以在不同品牌、型号的显卡上进行运行,只不过这种时候在编译的过程中可能就会发生各种各样的意外,也就让你的游戏过程增添了一些意外。
什么是着色器?
着色器是用来帮助确认渲染图形各种细节的电脑程序。例如,广大玩家比较熟悉的像素着色引擎,主要是用来计算像素的属性。这包括了像素的颜色、亮度、反射率和透明度等。游戏的开发人员需要使用这种工具来提升游戏的画面和表现,并且还可以有效的提升游戏制作的效率。
比如游戏中存在着复杂的天气系统,下雨时不同的物体都会拥有湿润的效果。那么这样工作人员就可以使用着色器来进行实现,而不用需要制作人亲手将每一件物品都打造出湿润的效果。由此可见,着色器可以让GPU的使用更加的灵活以及有效,一定程度上取代了之前的固定渲染管道技术。
什么是编译?
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序则把人们熟悉的语言转换成计算机可以理解的语言,也就让运行软件的特定处理器可以理解并执行。而着色器的代码也必须编译成在特定的GPU品牌和型号上可以运作的内容,显卡才能得以运行。这也就是为什么我们在更换GPU、更新驱动以及在游戏更新之后,就要对着色器进行重新编译。
为何有时着色器编译会导致游戏卡顿呢?
这或许就与游戏开发者有关了,有些开发者会致力于优化着色器编译过程,使之对于游戏性能的影响降至最低,自然玩家在玩游戏时不会遇到卡顿问题。而有些开发者或许不认真对待着色器,甚至大量使用,又或许因为赶工问题没有时间对于着色器编辑进行优化,这样玩家就容易遇到着色器编译占用资源大,导致游戏卡顿的问题。
在游戏运行过程中,后台进行的着色器编译工作往往会与游戏一起运行,例如著名的COD系列就可以看到,每当启动游戏之后就会显示“着色器正在编译”的字样。如果说电脑配置不够外加游戏优化不够好,这时如果你在编译中进行游戏就会感觉到卡顿了,唯一的解决方法就是等待编译完成。
如何解决着色器编译的问题
令人遗憾的是,玩家并没有太多办法主动来解决着色器编译带来的游戏卡顿。只能寄希望于游戏开发者在游戏制作之初,对于游戏有用心的进行优化。如果游戏有允许您预先进行着色器优化,那么请您静待游戏着色器优化完成后,再进行游戏游玩。
当然新一代的显卡厂商们也意识到着色器编译给玩家带来的问题,于是在这方面带来了技术上的优化。最新的40系显卡就提供了新的技术——着色器执行重排序(SER)。
着色器执行重排序(SER)通过即时重新安排着色器负载来提高执行效率,从而更好地利用GPU资源。SER为光线追踪带来最高可达3倍的性能提升,整体游戏性能提升可高达25%。新的流式多处理器具有高达83TFLOPS的着色能力,吞吐量超过上一代产品2倍。