【雜談】半條命圖形開發(fā)兩三事 第一章
做視頻實在是太困難了,所以我先回歸到文字創(chuàng)作上來(?
PS:這篇文章可能將會是未來某期視頻的文案
本文是我的第一篇非技術(shù)的雜談類文章,但因為我業(yè)余專修圖形學,所以也會穿插很多您不知道的,別人也沒講過的東西?:)??
第一章:3D 游戲史前時代 - 金源誕生
1996 年,一款名為 Quake 的游戲橫空出世。它的開發(fā)商 id Software 開創(chuàng)了商業(yè)游戲引擎的先河。它是由我們的神 John Carmack (約翰·卡馬克) 領導一個很小的團隊開發(fā)的。
Carmack 的履歷已不用過多介紹,反正您只需要知道他是整個游戲引擎領域的神就對了。

Quake 憑借著實時?3D 渲染以及炫酷的特效迅速火了起來,并且直接推動了現(xiàn)代意義上的圖形卡的發(fā)展,3dfx Voodoo 圖形加速卡從某種意義上來說就是為 Quake 而生的。同時 Quake 所衍生出的的電子競技模式與現(xiàn)代 WASD 鍵位也對后來整個游戲界產(chǎn)生了巨大影響。所以 Quake 是 FPS 歷史上最偉大的游戲之一。

說到畫面渲染,Quake 的光照使用了預計算輻射度,用它來生成光照貼圖。雖然那會只提供了直接光照的光照貼圖,但是它提供的光影效果在當年是任何游戲都無法超越的。
1997 年,Quake 2 誕生。它補充上了間接光照的預計算,使得它成為世界上第一款具有全局光照系統(tǒng)的游戲。

同時,Quake 2 也是現(xiàn)代計算機圖形學入門的經(jīng)典案例,它的渲染流程包含了很多現(xiàn)在都在應用的思想。并且 Quake 2 的渲染底層是模塊化的,易于學習和理解。

談到這里,您可能已經(jīng)領會到了 Quake 2 引擎在當年是有多么得誘人了。
這時,幾位懷揣夢想的胖子?(Gabe Newell 等人)很想做一款能轟動業(yè)界的射擊游戲,他們早就看中了 id 的 Quake 引擎。經(jīng)歷了幾番周折,Gabe Newell (G 胖)?托他的前同事?Mike Abrash 的關系找上了卡馬克,接下來就是索取引擎授權(quán)的事了。
當然,卡馬克也慷慨地給了 V 社 Quake 2 的授權(quán)(Fun Fact: 卡馬克)。V 社修改了 Quake 2 引擎的大部分底層組件,用這款新的引擎做了另一款 FPS 歷史上最偉大的游戲之一 —— Half-Life 半條命,這塊新的引擎也有了一個新的名字 'GoldSource" (黃金起源引擎,俗稱金源)

半條命(或整個金源引擎)沿用了 Quake 2 的光照烘焙系統(tǒng)—— "QRAD",全稱 Quake Radiosity,翻譯過來就是 “雷神之錘輻射度編譯系統(tǒng)”,繼承了 Quake 2 的全局光照編譯功能,使得 1998 年正式發(fā)售的半條命也有不錯的畫面效果。

您可能在上上張圖發(fā)現(xiàn)了,Quake 2 的模型投射了陰影。而半條命(這里展示的是零售版)沒有,這是為什么呢?
其實在 E3 時期的半條命 Alpha 版演示中,它是有陰影的。

和現(xiàn)在普遍使用陰影圖(Shadow Map)的方法不同,半條命(沿用 Quake 2)是使用的 Stencil Shadows,是不是一頭霧水?其實現(xiàn)在普遍使用的方法最大的區(qū)別在于,Stencil Shadows 是通過計算一個投射體積 (Shadow Volume) 來實現(xiàn)的陰影,而 Shadow Map 則是一種生成深度圖的方式,再來比較深度緩沖區(qū)的深度信息來計算陰影。

看到這里,您應該猜到了,Stencil Shadows 最大的一個缺陷就是陰影很硬,并且一般是無法解決的,模型有多硬他就多硬。您可以把它簡單理解為把模型拍扁后投射在貼圖上。并且它不夠 “聰明”,逐對象的 Stencil Shadow 投射 Volume 并不能處理不同陰影之間的信息,而不像 Shadow Map 是一種全局的方案。
標紅部分在實際渲染中體現(xiàn)的問題就是不同物體之間陰影的重疊,剛才那張半條命的截圖也顯示了。
半條命影子重疊了,我覺得不行 ······ V 社不是賣技術(shù)的 ······
—— 著名計算機圖形學家?moemiko?
不過,去除了這充滿 Bug 的 Stencil Shadows,對半條命來說確實是件好事。
最后,算上那些經(jīng)典的局部光照模型,就是大家熟悉的半條命的樣子了。

今天我們花了簡潔的篇幅講了半條命在圖形開發(fā),尤其是陰影這一塊的問題,下次我們接著講其它的。
請期待 第二章 - 初見起源
Reference
[1] Tomas A-M., et al. "Real Time Rendering Fourth Edition", CRC Press, 2018.
[2] Xi Wang, "01.游戲引擎導論 | GAMES104-現(xiàn)代游戲引擎:從入門到實踐", Bilibili website, 2022.
[3] moemiko, “半條命2在04年到底處于一個什么樣的水準?(光影篇)”, Bilibili website, 2022.