從眼球出發追尋光線的軌跡:淺談什麼是光線追蹤
2019年1月,“老黃家”NVIDIA終於拿出了基於最新圖靈架構的甜點級顯示卡RTX 2060,其最受關注的功能是讓消費者能夠以較低的成本,獲得電腦實時光線追蹤的渲染能力。諸多遊戲引擎如虛幻4,Unity紛紛宣佈將支援這項技術,並在《戰地5》等遊戲中應用開來。
什麼是光線追蹤?從字面意思來看似乎可以理解成追蹤光線的技術,而從放出的諸多演示視訊來看,應用了光線追蹤的畫面好像有了更接近真實世界感覺的光線,畫面不再像是被刻意製造出來的。那麼光線追蹤究竟是怎麼一回事?現在可以用來做什麼?
什麼是光線追蹤
如果用一句話來概括,光線追蹤就是計算視線觀察畫面的路徑,找到反射物和對應的發光源從而模擬出光照效果的技術。
在現實世界中光線照在物體上,會出現部分光線被吸收、部分光線反射出去、還有一部分被眼睛所看到的情況,眼鏡觀察到反射自物體以及周圍環境的光,便能認知到物體的存在。
而光線追蹤則是把顯示畫面的“鏡頭”當作人眼,射出不可見的光線投降畫面中的物體,然後計算是否能和畫面內光源相吻合,並根據計算出的光亮度對畫面進行顯示。這個過程正是在和客觀的光照尋找最大公約數,從而實現儘可能真實的光照效果。
這項技術概念最初在1969年由IBM員工Arthur Appel提出原型,1979年由Turner Whitted完善了具體實現的思路和方式,這位大佬目前正在NVIDIA研究事業部工作。
光線追蹤的出現,使得想要在畫面中模擬光照時不用計算全域性的光線,只需要算出眼球觀看到的那部分內容然後加以計算即可,大幅降低了同等光照級別下渲染畫面的所需資源。
預渲染與光線追蹤
早在個人電腦顯示卡實現實時光線追蹤技術之前,遊戲就需要模擬光照表現來提升遊戲的感染力,但電腦的效能還無法撐起光線的運算量,遊戲開發者們想到了各種辦法來在遊戲中儘可能地模擬出讓人信服的光線效果。
早在FPS開山之作的《毀滅戰士》,就引入了射出子彈的火光模擬,但這還很初級在敵人身上的火光之外沒有和場景做更多的模擬。之後的一代經典《半條命2》中,引入了更多的場景光照計算,每一次攻擊都能感受到光影的變化,這時計算的是陰影變化帶來的光照效果,場景還缺乏更多的光照計算。
再之後,開發者們找到了更節約表現卻更好的辦法:預渲染。在製作會出現在遊戲畫面中的每張貼圖時,就根據需要的光線表現預先算出對應的畫面,到了運行遊戲時直接載入對應的貼圖,然後再實時計算少量的光照,就可以實現還不錯的效果。
可能有人會問,同樣是電腦計算出來的畫面,為什麼電影的特效尤其是科幻電影中能夠有更為真實的光照表現呢?因為他們首先用上了光線追蹤。是的,在個人電腦用上光線追蹤數年前,電影工業就已經引入光線追蹤技術來提升畫面的光照表現。
電影畫面沒有一秒鐘完成30幀甚至60幀渲染的緊張要求,可以在強大計算機組成的叢集中用上數十分鐘甚至數小時來渲染僅僅一幀畫面,實現了可以跟真實世界相媲美的光線效果。
而NVIDIA的RTX顯示卡系列,通過引入高效的光線計算核心,在個人電腦上實現了實時光線追蹤,我們可以在30幀、60幀甚至更高幀率的畫面下看到更加客觀的光線。
“老黃”如何提升光線追蹤的計算效率
RTX顯示卡是如何做到能在遊戲即時重新整理的畫面中,也能夠帶來光線追蹤渲染的?這就得說到最初的Titan RTX、頂級的RTX2080Ti以及甜點級RTX2060的根——圖靈架構。
上文說到NVIDIA在設計新一代GPU時引入了高效的光線計算核心,這便是圖靈架構的RT Core。傳統的GPU核心計算光線效果,就像是引擎掛低檔位卻跑到高轉速,累得要死卻不見速度多快,而RT Core用更有效的方式來進行光線計算,掛到這個高檔位之後光線計算能力得到顯著提升。
但即使是提高了運算的效率,在光線這個超大計算量的物件面前,RT Core能提供的效能依舊有限,只能以較低水平來實現。而這個較低水平的實時光線追蹤渲染出的畫面,存在著大量噪點,於是老黃又引入了降噪計算使得畫面純淨起來。
即使是如此節約計算資源,把效果最大化的實時光線追蹤,在頂級顯示卡RTX2080Ti進行演示時也只能實現超過60幀的流暢水平。就是說我們如今看到的實時光線追蹤效果仍處於初級階段,還有非常大的進步空間。
光線追蹤現在可以用了嗎
在著名的星球大戰光線追蹤演示中,可以看到風暴士兵乳白色盔甲上即時反射出了天花板上的光源,同時照在身上的光線又表現出了真實可信的體積,基地地板的反光更是讓這段演示看起來像在真實世界搭建的錄影棚中設定。
不過在法斯瑪的亮銀色盔甲上還是看出了些許破綻,亮光盔甲的大面積光線反射雖然在極力還原客觀的情況,但由於算力以及渲染解析度的不足,還是能看出降噪後留下的顆粒感痕跡。
這是頂級顯示卡上渲染出的效果,到了甜點級RTX 2060上就難以啟齒了,相比RTX 2080Ti的68個光線追蹤核心,RTX 2060僅為30個少了一半還多,渲染效果也自然會打折扣。
根據評測資料,在《戰地5》1080P解析度最低光線追蹤畫質下,RTX 2060僅能達到55幀,離60幀的流暢目標還有距離;而星球大戰光線追蹤演示,4K畫面下僅有18幀,2K畫面下也僅有28幀。
結論一目瞭然,目前RTX 2060提供的光線追蹤僅僅是能開啟而已,離能夠在流暢畫面下帶來更真實光照還有距離。所以還是不要想憑藉RTX 2060就舒服地體驗實時光線追蹤,以它不亞於GTX 1070的效能和價格定位來看,作為單純的更新換代顯示卡更為合適。