![]()
星彡P(guān)丨文
正在編譯著色器……
68%
70%
75%
75%
啊,怎么進(jìn)度條卡住了??臥槽,怎么閃退了?
![]()
不知道你們有沒有發(fā)現(xiàn),近幾年的游戲,不管單機還是網(wǎng)游,不管是手機還是PC……
大家在第一次登錄游戲的時候,或者剛更新完游戲,經(jīng)常會看到一個“正在編譯著色器”的進(jìn)度條。
![]()
記得去年《黑神話:悟空》剛出的時候,就有很多網(wǎng)友調(diào)侃:游戲還沒開打,九九八十一難就已經(jīng)開始了。
第一難是解壓游戲,有的人下載完解壓了十幾分鐘,有的人解壓兩三個小時。第二難就是著色器編譯,多少人卡在這塊了。
![]()
手游更是如此。舉個例子,我手機里有一款二次元射擊游戲叫《塵白禁區(qū)》,平時做做日常收個菜也就1分鐘不到,當(dāng)做休閑副游挺好的。
然而我每次登錄都會卡在“正在編譯著色器”這個步驟,眼看著進(jìn)度1% 1%的跳動,過程極其緩慢,而且特別占用資源,CPU直接滿載。
手機變得特別發(fā)燙不說,我還不敢隨便關(guān)閉手機屏幕。因為一旦觸發(fā)鎖屏,進(jìn)度條可能就罷工了。
![]()
嗨呀,現(xiàn)在的二游普遍都是PC手機雙端,畫面越來越好,結(jié)果卡“編譯著色器”的情況也是越來越普遍了,網(wǎng)上一片怨聲載道。
網(wǎng)上搜索“著色器”的關(guān)鍵詞,你能看到很多《鳴潮》《原神》等等……不同手游玩家的相同吐槽。
![]()
![]()
甚至還有像華為鴻蒙NEXT這樣,因為鴻蒙原生《原神》編譯著色器的速度特別快,只用了區(qū)區(qū)3分鐘,而被UP主直呼“黑科技”的情況。
所以你有沒有好奇過,“著色器”到底是什么東西?
![]()
今天就隨便聊聊這個話題吧。
當(dāng)然,BB姬不是什么專業(yè)技術(shù)媒體,如果有什么錯漏的地方,大家也可以在評論區(qū)指正和補充。
![]()
01
首先解釋一下,“著色器”的英文是Shader。
它是一段代碼,一個程序,運行在GPU(也就是你的顯卡)上面,負(fù)責(zé)計算每個像素的光照、顏色、紋理、反射、折射等效果。
![]()
簡單來說,著色器相當(dāng)于給GPU讀的“使用說明書”,GPU有了這個說明書,才能知道游戲里的畫面該如何渲染。
如果這本“說明書”沒編好或丟了,你會看到各種詭異的畫面:比如走著走著,場景突然加載不出來,模型漆黑一片,或者角色眼睛變成詭異的紫色,缺少貼圖。
類似這種↓
![]()
還有這種↓

(BV1xs421w7aj,來自@Kukku_くっく)
那么問題來了,為什么會出現(xiàn)“下載十分鐘、編譯半小時”的情況呢?
——這是因為每個玩家的硬件配置千差萬別。顯卡型號、驅(qū)動版本、游戲版本、甚至操作系統(tǒng),只要有一個變量變了,之前的說明書對機器來說就成了“天書”。
![]()
開發(fā)商又不可能為成千上萬種硬件組合預(yù)先準(zhǔn)備所有情況。因此,當(dāng)你第一次啟動游戲或更新驅(qū)動后,CPU就要根據(jù)你當(dāng)前的環(huán)境,現(xiàn)場重新進(jìn)行“翻譯”。
——將程序員編寫的代碼,翻譯成機器能看懂的二進(jìn)制指令(0和1)的這個過程,就叫作“編譯著色器”。網(wǎng)上解釋的視頻很多,感興趣可以搜一搜。
![]()
據(jù)說新游戲的圖形api基本都是dx12或者Vulkan,新api接入了pso緩存技術(shù),提前編譯可以提高運行性能——于是有了肉眼可見的“編譯著色器”過程。
而老游戲的dx11/dx10、OpenGL那些api就不需要,因為畫質(zhì)也就那樣,運行的時候CPU順帶就可以把這活兒干了,相對無感。
現(xiàn)在有些廠商就比較坑爹了。
更新一些圖像處理啊什么的,它不在公告里說,直接默默更新了,這種熱補丁也會導(dǎo)致重新“編譯著色器”,最典型的就是《APEX英雄》。
![]()
我以前有個打“派”的朋友,他那臺老爺機每次進(jìn)游戲前先編譯10分鐘,再讀10分鐘地圖,敵人影都沒見著,半個小時已經(jīng)過去了。
當(dāng)然,也有一些游戲支持“后臺編譯”或者“先跳過,等后面手動編譯”的。缺點是如果優(yōu)化不到位,很容易遇到各種詭異的BUG。
像PC上的《使命召喚》,左上角有“著色器預(yù)載 XX%”的進(jìn)度條,我之前玩戰(zhàn)區(qū)的時候就被惡心壞了。
![]()
加載慢不說,還經(jīng)常卡進(jìn)度。不加載完畢你又不敢進(jìn)匹配,否則打到一半冒出一個“著色器優(yōu)化”警告的彈窗,直接崩掉游戲。
當(dāng)時網(wǎng)上流傳著一些玄學(xué)土方子,像是反復(fù)點擊匹配再取消來“手動催促”進(jìn)度條;或者干脆在靶場掛機,自己在一旁玩手機,等它自然加載完成。
![]()
![]()
有人喜歡第一次加載時間長點,玩的時候絲滑點更好。也有人覺得,我就鎖定一定幀數(shù)(比方說60幀),多出來的算力拿來編譯著色器更好。
——怎么選擇,最后還是要看廠商取舍,沒有高下之分。
![]()
![]()
02
面對漫長的編譯等待,我們這些臭打游戲的能做的也不多,全看開發(fā)者、軟件硬件,以及微軟的優(yōu)化。
舉個例子,你可能在Steam設(shè)置里見過“下載 - 著色器預(yù)緩存”的功能,不知道有什么用。
它的初衷很美好:當(dāng)同配置的其他玩家編譯好著色器后,Steam會將其上傳,讓你直接下載現(xiàn)成的緩存,從而跳過編譯過程。
![]()
主要還是針對Steam Deck掌機/主機這種硬件規(guī)格高度統(tǒng)一,且基于Linux架構(gòu)的自家設(shè)備,加速Vulkan/OpenGL游戲。
對于主流的 Windows游戲基本沒有用。加上下載服務(wù)器經(jīng)常“由于眾所周知的原因”連接超時,反而會導(dǎo)致啟動變慢。所以我建議PC玩家直接關(guān)掉。
![]()
另外,我記得NVIDIA 控制面板里也有一個“著色器緩存大小”設(shè)置,默認(rèn)通常只有512MB(放C盤上的),導(dǎo)致了很多動態(tài)編譯的游戲切換時會搶占空間。
設(shè)置成較高的緩存大小限制(比如5G以上或者無限制),可以緩解一部分重復(fù)編譯帶來的卡頓。代價是會更占用磁盤空間。
不過要注意,有的人筆記本電腦就一塊固態(tài),還喜歡給硬盤分區(qū),C盤給個50G將將夠用,一不注意很容易被塞爆。
![]()
前兩天,微軟也在ROG Xbox Ally掌機推出了一個“云端編譯著色器”技術(shù),可以把編譯的任務(wù)放到云端處理,降低電池消耗,避免風(fēng)扇呼呼轉(zhuǎn)。
還有一個同步推出的“高級著色器交付”功能,允許游戲下載時預(yù)加載著色器,減少首次運行卡頓,《崩壞:星穹鐵道》已經(jīng)適配了。
這種就是微軟聯(lián)合游戲廠商的結(jié)果——如今“編譯著色器”花費的時間、額外功耗已經(jīng)成為一個痛點。為了讓你流暢游戲,程序員們簡直操碎了心。
![]()
![]()
03
相比之下,PS5或Xbox這種游戲主機就省事多了。因為硬件規(guī)格高度統(tǒng)一,廠商直接預(yù)編譯好一份“標(biāo)準(zhǔn)說明書”隨游戲分發(fā),幾乎沒有重新編譯的煩惱。
這是我覺得現(xiàn)在主機相比PC,為數(shù)不多的優(yōu)勢之一:即下即玩,不折騰。以前我們總在聊獨占陣營、聊生態(tài)圈,后來發(fā)現(xiàn)這些都是浮云。
![]()
→但反過來,這種設(shè)計也成為了模擬器的痛點。
搗鼓過Yuzu、Ryujinx之類Switch模擬器的朋友,一定對那種“莫名其妙的小卡頓”記憶猶新:游戲剛開始的前幾分鐘、初次進(jìn)入新區(qū)域、或者放出某個特效,畫面總是會卡一下,非常影響游玩。
類似現(xiàn)象存在很長一段時間了,前代的Wii模擬器就有。

(Wii模擬器上的《銀河戰(zhàn)士3》,卡頓比較明顯)
歸根結(jié)底,主機游戲在設(shè)計之初就沒考慮過復(fù)雜的 PC 硬件環(huán)境這也是為什么Switch發(fā)售快十年了,模擬器該卡還是會卡,其實就是著色器編譯的鍋。
越是畫面復(fù)雜的Switch游戲,像《塞爾達(dá)傳說:王國之淚》這種,越是頻繁出現(xiàn)幀數(shù)暴降,卡成PPT的情況。
一般正常游戲3~5個小時以后,模擬器基本上自動記錄好了大多數(shù)的著色器,后續(xù)再重開游戲,同樣的場景和特效,才變得100%流暢。
所以模擬器非常吃CPU性能,你CPU不行,別說5090顯卡了,9050來了都是無用功——顯卡好可以開更高分辨率,但是幀數(shù)問題還是要看CPU的。
![]()
![]()
當(dāng)然,這個話題涉及到灰色地帶,就不繼續(xù)展開了。
如果你正在經(jīng)歷著不正常的頻繁卡頓,先不要慌——著色器緩存正在努力改善你糟糕的體驗——而這個改善的過程,恰恰成了糟糕體驗的來源。怎么辦?涼拌。
![]()
我們能做的只有不要閑的沒事就換一個顯卡驅(qū)動,不要沒事閑的就重新裝一遍系統(tǒng),不要覺得游戲有問題,就把它卸了重裝,不要做些多余的動作,直接正常玩就行了。還有你們,做游戲的,不要每天瞎雞兒熱更新啊!
![]()
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.