BLOG

什麼是著色器?為什麼遊戲需要預先載入它們?

更新

  此頁面由 DeepL 自動翻譯。 Switch to English

著色器是作為渲染過程的一部分,在您的GPU上執行的微型程式。它們負責處理從 3D 模型的幾何變換,到貼圖、光照、陰影以及後處理效果的應用等所有環節。它們是現代遊戲的基石,也是這些遊戲畫面如此令人驚豔的原因之一。

然而,情況並非一直如此。早期的顯示卡仰賴固定功能硬體,設有專門負責紋理渲染和光照等任務的獨立單元。雖然這些單元在當時已相當強大,但運作方式卻相當僵化。隨著遊戲變得愈發複雜且視覺效果愈發精緻,固定硬體不僅限制了視覺效果,也束縛了創作自由。可程式化著色器則打破了這些限制。

像素著色器

最早被廣泛使用的著色器是像素著色器。它們決定螢幕上每個像素的最終顏色,並能處理光照計算、陰影、紋理、透明度,以及模糊或卡通渲染等後處理效果。頂點著色器隨後問世,讓開發者能在幾何體渲染之前,對位置、顏色和紋理座標等頂點資料進行處理。

隨後出現了幾何著色器,它能在圖形處理管線中即時生成並修改幾何體。雖然由於效能成本的考量,如今已較少被廣泛使用,但它曾實現了程序化幾何以及粒子特效等效果。鑲嵌著色器則在此概念基礎上進一步發展,透過動態增加幾何細節,使表面看起來更平滑,而無需儲存更多模型資料。

網格著色器

近期,現代 API 引入了任務著色器與網格著色器。這些著色器取代了傳統頂點、幾何體及細分階段的部分內容,改採更靈活的系統,讓開發者能更精確地控制幾何體的生成與處理方式。

光線追蹤著色器是最新加入的功能。這些著色器透過追蹤光線在場景中的路徑,用於實現反射、陰影和全局照明等效果。它們透過 DirectX Raytracing 和 Vulkan 提供支援,且需要相對較新的顯示卡才能達到可遊玩的效能水準。

「預載著色器」是什麼意思?

如果著色器就是這樣,為什麼預載它們會花這麼久時間,而且「預載」到底是什麼意思?

這個術語稍有誤導之嫌。實際上,著色器預載是指編譯並快取著色器,而非單純地載入它們。遊戲開發者可以選擇在玩家遊玩時即時編譯著色器,或是於遊戲開始前預先編譯好著色器。

在遊戲過程中編譯著色器雖可在簡單情況下運作,但當遇到新的特效或區域時,往往會導致延遲和畫面卡頓。若需同時編譯大量著色器,幀時間可能會劇烈飆升,這正是為何在開放世界遊戲中,這種做法特別明顯。過度的即時編譯通常是 PC 優化不佳的徵兆。

預載的優點

預載著色器可透過預先編譯並將結果儲存至快取中,來避免此問題。一旦編譯完成,著色器便能在遊戲過程中立即重複使用,從而帶來更流暢的效能。其缺點在於,首次執行遊戲時必須等待著色器編譯步驟完成。

在遊戲進行重大更新或顯示卡驅動程式更新後,這種等待情況可能會再次出現,因為著色器二進位檔與遊戲版本及 GPU 驅動程式都息息相關。由於顯示卡驅動程式更新頻繁,著色器重新編譯已成為 PC 玩家司空見慣的困擾。

為什麼開發者不能直接提供預編譯好的著色器呢?在我們摯愛的個人電腦上,硬體和驅動程式的環境實在是太過多元。著色器的編譯取決於 GPU 架構、驅動程式版本以及圖形 API,因此能在某個系統上運作的編譯後著色器,在另一個系統上便無法運作。遊戲主機之所以能避免這個問題,是因為它們是固定平台,但個人電腦並非如此。

因此,下次當你盯著著色器預載畫面時,請記住:它的存在是為了在實際遊玩時減少畫面卡頓並提升效能。這是一股向善的力量。

Stay up to date with CORSAIR. Get our latest News, Guides, and Product Updates in your Google feeds.

Add CORSAIR as a preferred source

JOIN OUR OFFICIAL CORSAIR COMMUNITIES

Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat about the latest PC, tech, and gaming trends, our community is the place for you.

Was this article helpful?