我相信不少玩家在玩游戲時總會遇到這樣的問題:明明我電腦的配置已經足夠高了,但玩游戲時還是會遇到一卡一卡的情況,這是怎么一回事呢?遇到這個問題大家不用急著排查故障,首先觀看一下游戲上方是否有“著色器正在編譯中”這行字,或者這就是導致你游戲卡頓的罪魁禍首了。
由于大家的硬件品牌以及配置都有所不同,因此游戲的開發(fā)者需要確保自己的游戲可以在不同品牌、型號的顯卡上進行運行,只不過這種時候在編譯的過程中可能就會發(fā)生各種各樣的意外,也就讓你的游戲過程增添了一些意外。
什么是著色器?
著色器是用來幫助確認渲染圖形各種細節(jié)的電腦程序。例如,廣大玩家比較熟悉的像素著色引擎,主要是用來計算像素的屬性。這包括了像素的顏色、亮度、反射率和透明度等。游戲的開發(fā)人員需要使用這種工具來提升游戲的畫面和表現,并且還可以有效的提升游戲制作的效率。
比如游戲中存在著復雜的天氣系統(tǒng),下雨時不同的物體都會擁有濕潤的效果。那么這樣工作人員就可以使用著色器來進行實現,而不用需要制作人親手將每一件物品都打造出濕潤的效果。由此可見,著色器可以讓GPU的使用更加的靈活以及有效,一定程度上取代了之前的固定渲染管道技術。
什么是編譯?
編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序則把人們熟悉的語言轉換成計算機可以理解的語言,也就讓運行軟件的特定處理器可以理解并執(zhí)行。而著色器的代碼也必須編譯成在特定的GPU品牌和型號上可以運作的內容,顯卡才能得以運行。這也就是為什么我們在更換GPU、更新驅動以及在游戲更新之后,就要對著色器進行重新編譯。
為何有時著色器編譯會導致游戲卡頓呢?
這或許就與游戲開發(fā)者有關了,有些開發(fā)者會致力于優(yōu)化著色器編譯過程,使之對于游戲性能的影響降至低,自然玩家在玩游戲時不會遇到卡頓問題。而有些開發(fā)者或許不認真對待著色器,甚至大量使用,又或許因為趕工問題沒有時間對于著色器編輯進行優(yōu)化,這樣玩家就容易遇到著色器編譯占用資源大,導致游戲卡頓的問題。
在游戲運行過程中,后臺進行的著色器編譯工作往往會與游戲一起運行,例如著名的COD系列就可以看到,每當啟動游戲之后就會顯示“著色器正在編譯”的字樣。如果說電腦配置不夠外加游戲優(yōu)化不夠好,這時如果你在編譯中進行游戲就會感覺到卡頓了,唯一的解決方法就是等待編譯完成。
如何解決著色器編譯的問題
令人遺憾的是,玩家并沒有太多辦法主動來解決著色器編譯帶來的游戲卡頓。只能寄希望于游戲開發(fā)者在游戲制作之初,對于游戲有用心的進行優(yōu)化。如果游戲有允許您預先進行著色器優(yōu)化,那么請您靜待游戲著色器優(yōu)化完成后,再進行游戲游玩。
當然新一代的顯卡廠商們也意識到著色器編譯給玩家?guī)淼膯栴},于是在這方面帶來了技術上的優(yōu)化。新的40系顯卡就提供了新的技術——著色器執(zhí)行重排序(SER)。
著色器執(zhí)行重排序(SER)通過即時重新安排著色器負載來提高執(zhí)行效率,從而更好地利用GPU資源。SER為光線追蹤帶來高可達3倍的性能提升,整體游戲性能提升可高達25%。新的流式多處理器具有高達83TFLOPS的著色能力,吞吐量超過上一代產品2倍。