遊戲裡的水面為什麼會反射

發表時間:2026 年 11 月 02 日 | 更新日期:2026 年 11 月 02 日 | 編輯:雅寶社區編輯團隊
遊戲裡的水面為什麼會反射 - 雅寶社區 · 頂客論壇

平面反射是最直觀的做法。既然水面是一個平面,那就把場景以水面為鏡面翻轉一次,用一台虛擬攝影機從「水下」往上看,把這個翻轉後的畫面渲染到一張紋理上,再貼回水面。這個方法的效果非常好,倒影幾何完全正確,遠處的山、近處的船、天上的雲都會如實出現在水裡。

但代價也很明顯:場景要被渲染兩次。原本一秒要畫六十次的場景,現在得畫一百二十次。如果場景本身已經很吃效能,這種做法會直接把幀數砍半。因此平面反射通常只用在「單一大片水域」的場景,例如鏡面般的人工湖、游泳池,或者像《戰慄時空》系列裡那種以水為主題的關卡。開發者也會透過降低解析度、只渲染反射圖層的一部分、或降低更新頻率來壓成本。

值得一提的是,平面反射只適用於「平面」。一旦水面有起伏、有波浪,翻轉後的幾何就會開始失真,所以這種方法最適合平靜的水面。這也是為什麼很多遊戲在寧靜湖泊上用了平面反射,到了波濤洶湧的海面就悄悄換成別的方法。

技術二:屏幕空間反射(Screen Space Reflection, SSR)

SSR 是過去十年最普遍的反射方案,幾乎所有中大型 3A 遊戲都用過。它的思路很聰明:螢幕上已經有這一幀的畫面了,那我們直接在這個畫面裡「找」反射。具體做法是沿著反射方向在螢幕空間中進行光線步進(ray marching),比對深度緩衝,看這條射線有沒有撞到東西。撞到了,就把那個像素的顏色取來用。

SSR 的優點是便宜且效果自然,倒影和場景永遠對得上,不會有「倒影裡出現不該出現的東西」這種穿幫。但它有三個致命限制。第一,它只能反射螢幕上看得到的東西。螢幕外、攝影機背後、被其他物件遮住的物體,SSR 一概不知。第二,當反射射線很快離開螢幕邊緣時,倒影會直接消失或變成漸層淡出,這就是為什麼很多遊戲在水面靠近螢幕邊界的地方,倒影會突然「斷掉」。第三,SSR 對粗糙表面的模糊反射處理較為困難,通常得額外做模糊處理。

如果你玩遊戲時看到水面倒影在畫面邊緣突然不見,或者走動時倒影有種「拖影」「抖動」的感覺,那八成就是 SSR 的鍋。這不是 bug,而是演算法本身的限制。

技術三:立方體貼圖與環境貼圖(Cubemap / IBL)

如果連 SSR 都嫌貴,那就用最古老也最便宜的方法:事先烘焙一張立方體貼圖。開發者在水面附近放一個「反射探針」(Reflection Probe),從那個位置向六個方向拍下環境,壓縮成一張貼圖。水面的每個像素只要根據反射方向去採樣這張貼圖就行了,成本幾乎可以忽略。

問題是這張貼圖是「固定位置」拍的。當玩家移動、或場景中的物件會動時,倒影就會失真。想像你站在湖邊,倒影裡的雲卻跟你頭頂上的雲不對應,因為那張貼圖是在湖中央拍的。這種情況在大型開放世界裡特別明顯,尤其是水面很大、玩家移動距離很遠時。

不過立方體貼圖在處理「模糊反射」時反而很有優勢,因為它天生就適合搭配預先模糊(prefiltered)的 mipmap,用來模擬粗糙表面的柔和反射。所以很多遊戲會把它當成 SSR 的備援:SSR 打不到的地方,就退回採樣立方體貼圖,讓倒影不至於完全消失。

技術四:光線追蹤反射(Ray Traced Reflection)

光線追蹤是把前面所有「猜」的步驟,換成真正的物理模擬。顯示卡會對每個像素發射反射射線,直接與場景的幾何加速結構(BVH)求交,算出準確的反射顏色。它的正確性無庸置疑——螢幕外的東西也能被反射到,倒影不會斷掉,粗糙度與反射的互動也完全物理正確。

真正的光線追蹤反射對效能的要求極高。即使是最新的顯示卡,在 4K 解析度下開啟完整的光追水面,也常常需要依靠「降噪」(denoising)、「降採樣」(half-resolution ray tracing)等技巧來維持可玩幀數。這就是為什麼很多遊戲的光追反射選項會註明「需搭配 DLSS/FSR」才能流暢運行。

目前常見的做法是「混合式光線追蹤」:只對水面、玻璃、金屬這些高反射材質發射射線,其餘部分仍用光柵化渲染。這種折衷讓光追反射在近年逐漸普及,也讓水面反射的真實感跨進了一大步。

技術五:混合方案——開發者現實中的折衷

在真實的遊戲開發中,幾乎沒有專案會只用單一技術。常見的組合是:遠景用立方體貼圖、近景用 SSR、關鍵水面用平面反射、高階設定才開啟光追。引擎會根據攝影機距離、水面大小、材質重要性,動態決定每個像素要用哪一套方案。這種「按需分配」的策略,是現代遊戲能在有限硬體上榨出漂亮畫面的關鍵。

理解這一點之後,你就會明白為什麼同一款遊戲在不同場景的水面品質會有落差——那可能是開發者刻意做的效能調度,而不是偷工減料。

從像素到波浪:法線、粗糙度與反射的真實感

反射算得再準,如果水面本身是平的,看起來還是不像水。真正讓水面「活起來」的,是表面的擾動。這裡有兩個核心概念:法線貼圖與波浪模擬。

法線貼圖如何「騙」你的眼睛

水面有數不清的細小波紋,如果每一個波紋都用幾何體去建模,效能會直接爆炸。所以開發者改用「法線貼圖」——一張記錄了每個像素表面朝向的圖片。著色器在計算反射時,不採用平坦水面的法線,而是去採樣這張貼圖,得到一個被擾動過的朝向。於是反射光線的方向就變得凌亂,倒影自然破碎成點點波光。

進階的做法會使用「雙層法線」:一層大尺度的波浪(長波),一層小尺度的細紋(短波),然後隨時間以不同速度滾動。這種做法能模擬出風吹過水面的層次感,也讓倒影在不同距離呈現不同的破碎程度。你如果仔細觀察,會發現遠處的水面反射比較「糊」,近處比較「碎」,那就是法線貼圖的 mipmap 與距離衰減在起作用。

波浪頻譜、焦散與泡沫

在更講究的遊戲裡,水面會用「快速傅立葉變換」(FFT)來模擬海浪頻譜,讓波浪的形狀符合流體力學的統計規律。這種做法常見於航海類、海洋模擬類遊戲,例如《盜賊之海》或《刺客教條:黑旗》的海面。波浪一真實,反射的擾動也就跟著真實。

此外,焦散(caustics)與泡沫雖然不直接影響「反射」,卻是玩家判斷水面真實感的重要線索。陽光穿過波浪在水底形成的亮紋、船尾翻起的白沫、岸邊拍打出的水花,這些細節會讓你「相信」這片水是真的,即使它的反射其實是用便宜的立方體貼圖算出來的。這也是美術與技術互相掩護的經典案例。

不同引擎的實作差異:Unity、Unreal 與自研引擎

就算原理相同,不同引擎的實作方式與預設參數也會讓水面看起來截然不同。對開發者來說,理解引擎的內建方案能省下大量時間;對玩家來說,這能解釋為什麼「同一張顯卡、不同遊戲,水面差距這麼大」。

Unity 的反射探針與 Planar Reflection

Unity 內建的反射系統以「反射探針」(Reflection Probe)為核心,本質就是前面提到的立方體貼圖。開發者可以在場景中佈置多個探針,讓不同區域的水面採樣到最接近的環境。品質設定中的 Probe Resolution 直接決定倒影的清晰度,這也是為什麼很多 Unity 專案的水面倒影看起來「軟軟的」——解析度低、模糊度高。

如果需要鏡面般的水面,Unity 官方沒有內建平面反射,通常得靠第三方外掛或自寫腳本,以額外的攝影機渲染反射圖層。這種做法的效能開銷與場景複雜度成正比,因此常用在室內場景或單一水池。

Unreal Engine 的 Planar Reflection 與 Lumen

Unreal 在這方面提供了更完整的工具鏈。它內建 Planar Reflection 元件,能直接為指定平面生成高品質倒影;同時也有 Screen Space Reflections 與 Reflection Capture(立方體貼圖)作為不同層級的方案。近年的 Lumen 全局光照系統更進一步,透過軟體光線追蹤與表面快取,讓反射在不開啟硬體光追的情況下也能有不錯的準確度。

實務上,Unreal 專案常見的配置是:水面啟用 Planar Reflection 搭配 SSR,遠處用 Reflection Capture 補足,高階平台再開啟硬體光追。這種多層次設計讓開發者能針對不同平台調整,也讓玩家在設定選單裡看到琳瑯滿目的選項。

自研引擎:為什麼大廠喜歡自己造輪子

許多 3A 大廠會為水面量身打造專屬的渲染管線,例如《碧血狂殺 2》的河流系統、《地平線:西域禁地》的水體模擬,都是自研引擎的成果。自研的好處是可以針對遊戲需求深度最佳化——例如只渲染水面附近一定範圍的反射、把反射與波浪模擬綁在同一套 GPU 管線裡、或針對特定平台做取捨。代價是開發成本極高,通常只有資源充足的工作室才玩得起。

效能與畫質的取捨:為什麼你的水面開了 SSR 還是糊

很多玩家會遇到一個困惑:明明把反射品質調到最高、也開啟了光線追蹤,水面倒影還是不如預期清晰。這背後通常有幾個原因,值得逐一排查。

解析度與降噪的隱形代價

光線追蹤反射為了效能,經常以「半解析度」甚至「四分之一解析度」計算,再透過時間性降噪(Temporal Denoising)重建。這個過程會讓倒影失去高頻細節,看起來軟軟的、有種「被抹過」的感覺。如果你的螢幕解析度是 4K,這個落差會更明顯。解決方式通常是開啟 DLSS 或 FSR 的品質模式,讓演算法用較低內部解析度渲染再放大,反而能換取更穩定的反射品質。

時間性抖動與殘影

SSR 與時間性反射常常會產生「鬼影」或「拖影」,尤其在快速移動的鏡頭下特別明顯。這是因為演算法會混合前幾幀的資訊來穩定畫面,但當場景快速變化時,舊資訊就來不及更新。這類問題通常無法靠玩家端設定完全消除,只能期待開發者調校參數。

常見畫面問題排查清單

  • 倒影在螢幕邊緣突然消失:典型的 SSR 限制,屬正常現象,無法透過設定修復。
  • 倒影模糊、細節不足:可能是反射解析度設定過低,或降噪強度過高,可嘗試提高反射品質。
  • 倒影與實際景物不對應:可能是立方體貼圖位置錯誤,或探針更新頻率過低。
  • 水面閃爍、抖動:可能是法線貼圖採樣頻率過高(aliasing),可開啟 TAA 或調整水面細節。
  • 開啟光追後幀數驟降:屬預期行為,建議搭配升頻技術或降低光追反射的解析度。
  • 玩家視角:如何判斷一款遊戲的水面反射做得好不好

    最後,讓我們回到玩家最關心的問題:怎麼一眼看出這款遊戲的水面反射是「真功夫」還是「貼圖魔術」?以下幾個觀察點可以幫你快速判斷。

    第一,看倒影是否會隨視角變化。真正的反射會隨著你移動而即時更新,假的立方體貼圖則會在你走遠後露出破綻——倒影裡的景物跟你眼前的景物對不上。

    第二,看倒影的邊緣是否會消失。如果倒影在螢幕邊界附近突然斷掉,那幾乎可以確定是 SSR;如果倒影完整延伸到畫面外,可能是平面反射或光線追蹤。

    第三,看波浪與反射的互動。好的水面會讓倒影隨著波浪破碎、拉伸、閃爍;差的水面則像貼了一張會動的鏡子貼紙,倒影與波浪各玩各的。

    第四,看效能與畫質的平衡。如果一款遊戲能在中階顯卡上提供穩定 60 幀又有漂亮倒影,那開發團隊在技術取捨上肯定下了不少功夫,值得給個讚。

    當然,這些判斷只是參考。遊戲是藝術與工程的結晶,有時候開發者刻意用較便宜的反射方案,是為了把效能預算留給更重要的地方——例如角色演出、光影氛圍、或更複雜的物理互動。水面好不好看,最終還是要回到整體體驗來評價。

    結語:每一道波光,都是一場工程與美學的談判

    從菲涅耳方程式到螢幕空間步進,從立方體貼圖到光線追蹤,遊戲裡的水面反射背後,是一整套橫跨物理、數學與工程取捨的知識體系。下一次當你在遊戲裡看見湖面倒映出滿天星斗,或者在雨天積水裡看到霓虹燈的碎影,不妨多想一秒:這片水面是用什麼方法算出來的?開發者又在哪些地方做了取捨?

    水面反射之所以迷人,正因為它同時是「最容易穿幫」與「最容易驚豔」的視覺元素。它可以是技術力的展示場,也可以是氣氛營造的關鍵。無論你是想調整畫質設定的玩家,還是正在研究渲染技術的開發者,希望這篇文章能讓你在下一次凝視水面時,多看見一層別人沒注意到的風景。

    如果你對水面渲染還有更多疑問,或者想分享自己在某款遊戲裡看到的神級水面效果,都歡迎在底下留言討論。我們下次見。

    ```

    🏠 返回首頁