前往
大廳
主題

「所以光追有很重要嗎?」

DK | 2023-12-15 18:27:35 | 巴幣 1124 | 人氣 313

本文是轉錄並重新編輯在 PTT C_Chat 的回文(Re: [問題] 所以光追有很重要嗎? #1bUw3bOE (C_Chat))而成,感覺寫得滿多好像挺適合搬出來存一篇好讀版參考。
原文是回覆板友對光線追蹤效果的困惑,而詳細說明了遊戲開發上造假光線表現的方式與對應的缺陷,以及光線追蹤具體能帶來什麼幫助。


網路上滿常看到對於光線追蹤效果的疑惑,實務上是因為大部分遊戲都是針對無光線追蹤的設備造假出好看的視覺,啟用光線追蹤的具體幫助往往只有知道該盯著什麼細節看才能注意到。
也因此,光線追蹤的價值是幫助開發者用更少的努力去假造,就能達成玩家看起來會覺得高品質的結果。不過消費者跟開發者的荷包會一起折損(?

最簡單的理解方式應該是用 SSD 傳輸速度類比,載入超快應該是人人都有感的議題。但在有 SSD 應對即時載入之前,開發者也會嘗試用遊戲設計來假造出無縫體驗。
因為玩家不喜歡載入,遊戲設計為了降低硬性的載入,開始擺了一堆藏住載入的狹縫設計。理論上藉由這個假造結果可以提升玩家體驗,但遲早累積起來反而會變成干擾體驗,如果曾經玩過 FF7R 的話應該就知道其中載入狹縫的出現頻率有多可怕 XD
可以看這段影片中,開發者如何用狹縫困住玩家的移動來創造載入的空隙,而如果有讀取速度快很多的 SSD 的話,開發者就不需要用這種設計來造假無縫。

簡單類比就到此為止,以下試著寫一篇長一點的文章解釋,可以拿杯飲料來邊喝邊看。


如果玩過的遊戲中覺得光線追蹤沒什麼幫助的話,代表這些遊戲本來就假造得夠好。而雖然所有光線追蹤帶來的體驗都能用其他方式假造,但通常:
  • 很難假造到完美
  • 效能也稱不上真的很好
  • 很容易引來特定情況下看起來很糟的結果
  • 要花專業人力的時間來假造
光線追蹤存在的話,帶來的幫助就是直接有完美的結果,不需要想著怎樣假造,只需要想著怎樣讓最後的結果好看,當然因為效能需求很高而現在只能用低解析度跑是個問題,但解析度的問題遲早會被強化的硬體解決。
再者就是用 DLSS、XeSS 跟 FSR2 幫忙假造......用假造來解決假造的問題?矛盾就是這麼樸實無華(X

光線追蹤允許了以下幾件事不需要假造:
  • 全域照明(任何光源都有多次彈跳的照明)
  • Emissive Lighting(不知道怎翻,能讓某些理論上該有光的地方真的照亮周圍)
  • 反射(鏡子真的會反射)
  • 影子(完美表現的影子)
以下我們就來看每個要素要怎麼假造跟會有什麼問題。

全域照明(Global Illumination)

物理世界的任何東西都可以無限地反射光,但常態的光線模擬不能做到這結果。
常見的假造方式有兩種:手動微調假造跟光照貼圖。

手動微調假造

如果只有最單純的光線模擬的話會長這樣,天花板暗處超暗,沒有接收到來自地面的反射光:

這時候可能就會派個人力去假造,例如說複製額外一份光源變成這樣,讓場景看起來像是有反射光:

這樣的做法考驗的是設計師的人腦光線追蹤品質(?),以及要花在微調上的時間。

光照貼圖

簡單來說就是我們先做一次光線追蹤,然後貼在場景上,完工!
這樣的確會有完美的反射光,但相對地整個場景都不能變動。PS4 世代的遊戲缺乏物理互動的理由多半跟這件事情有關,優先選擇了畫面的好看而犧牲掉可互動性。

當然上述兩個問題都有對應的更多的假造方式來改善體驗,但相較之下有了光線追蹤,就
允許開發者只要打開引擎的一個勾勾就搞定一切問題。
原版
人腦假造
光線追蹤

一鍵完成,而且品質比設計師的人腦光線追蹤還要好。
好啦不是真的一鍵啦,要先有人把這功能寫好 XD

Emissive Lighting

遊戲中的小發光物件,例如說路邊的霓虹招牌,通常材質設定上可以設定一個值來模擬發出一個特定的光線的視覺。但是沒有照亮周邊的場景的話會很奇怪,所以通常得人工額外塞一個光源進去。

然而常態光線模擬其實只擅長處理單點發出來的光源,所以設計師假造的時候也只能用有限的單點光源去處理,例如說這樣:

相對的,光線追蹤可以正確模擬從每一個點發出來的光線:


反射

反射的假造相當多元,其中最簡單的方式就是從鏡子的對面再繪製場景一次,不過這樣做當然很吃效能所以不常見,也因為這樣大多數遊戲都會故意讓出現的鏡子物品是破裂的狀態或是看起來很髒 XD

以下再介紹一些例子:

單純複製一份場景在另一邊

如果要在地面顯示場景的反射的話,就直接把場景複製一份到地下就好啦!

複製畫面內的資訊

水平的時候效果很好,但螢幕內看不見反射物件的時候,就會很莫名其妙的反射消失。

大概對視覺影響最大的情況就是像這樣,一扇金屬的門:

沒有光線追蹤的情況下因為只能塞一個泛用的低解析度反射而會看起來像是發光。有了光線追蹤之後就可以看起來很正常:


影子

由於遊戲引擎渲染影子的限制,最常態的陰影只能被渲染成「完美的硬陰影」,同時陰影的解析度會受到限制。對於陰影的解析度解法當然可以單純調高解析度,但同時還有著沒辦法處理局部遮蔽的問題。

局部遮蔽的處理目前通常是用所謂的 SSAO,就是根據場景深度假造光線的遮蔽:

其實效果就會很好了,不過終究是假造的,會算出錯誤的結果。

除此之外影子沒有什麼方便假造的大招,所以光線追蹤對影子品質的改善會很明顯:


總之大概是這樣。
光線追蹤可以自動解決很多讓遊戲看起來好看的技術問題,對大公司來說可以省人力,對於本來就沒那人力的小團隊來說可以自動提升視覺品質。
理論上應該要是玩家跟開發者的雙贏,不過我想在那之前應該是老黃的口袋先贏。

最後也不仿感念一下投注無數心力讓我們不用仰賴光追就能看到好看光線的開發者們:
(通常大作都會有一大把獨立的 Lighting Artist,小廠可能身兼多職看不出來)


以上提供參考,本文沒有老黃贊助,老黃拜託請送我一張 4090。

創作回應

油到滑倒ㄌ
把光追算出來的接觸陰影作為SSAO貼圖應用上去也會很漂亮,個人覺得Ambient occlusion的提升對畫面整體觀感的強化比把光追用在即時反射還有效用
2023-12-15 19:42:46
DK
AO 很讚阿 XD 我剛開始做遊戲的時候是想要只用 AO 跟素模處理視覺
2023-12-15 20:09:53

更多創作