關于光線追蹤的科普

距英偉達發(fā)布RTX系列顯卡已經(jīng)過了快一年了条舔,一直想做一期關于光線追蹤技術(shù)的科普堆巧,但拖延癥晚期加上一直也沒能抽出時間虚婿,也就再拖赋铝,好在最近和小伙伴的游戲開發(fā)告一段落插勤,正值端午也閑的很,就著手寫了這篇科普,以下是正文农尖。


首先我們先來了解一下全局光照的概念区匠。

全局光照(Global Illumination,簡稱 GI)雏亚,是指既考慮場景中來自光源的直接光照冶伞,又考慮經(jīng)過場景中其他物體反射后的間接光照的一種渲染技術(shù)唆香。而光線追蹤(Ray tracing)只是全局光照的一個實現(xiàn)方向,當然還有輻射度滑沧、環(huán)境光遮蔽(ambient occlusion)并村、光子貼圖、Light Probe等方向滓技。


光線追蹤原理圖

真實的世界光線是從光源直接照射到我們的眼鏡或者經(jīng)過多次反彈再到達我們的眼鏡哩牍,當我們試圖用計算機模擬的時候我們就會發(fā)現(xiàn)這是非常困難的尤其是在大的場景下,一個光源就要經(jīng)過無數(shù)次反射會有無數(shù)條光線到達我們的攝像機令漂,計算量極大姐叁,理所當然的我們會想到,我們可以減少光線的數(shù)量以及反彈的次數(shù)啊洗显,確實外潜,但如果我們反過來想,光線不從光源發(fā)出而是從攝像機發(fā)出挠唆,經(jīng)過多次反彈最終到達光源处窥,我們只需要計算目前我們所看到的畫面的光照,而不用考慮不會反射到我們當前的畫面的光線玄组,這樣我們就極大的減少了計算量滔驾。最終光線得到顏色信息,映射在屏幕上成為像素俄讹,無數(shù)的像素組成一起就渲染成了一張圖片了哆致。

但即便是這樣,計算量依舊巨大患膛,要想達到每秒渲染60圖片在普通的計算機上是不可能的摊阀,那么我們目前玩的游戲又是如何做到栩栩如生的畫面的呢,這里又要提到光柵化渲染了踪蹬,這也當今游戲畫面最主流的渲染方式胞此。這里引用英偉達官方的解釋:

長期以來,實時計算機圖形一直使用一種稱為“光柵化”的技術(shù)在二維屏幕上顯示三維物體跃捣。該技術(shù)速度快漱牵,且效果足夠好,盡管它仍然無法達到光線追蹤所能達到的水平疚漆。

借助光柵化技術(shù)酣胀,可通過虛擬三角形或多邊形網(wǎng)格來創(chuàng)建物體 3D 模型刁赦。在這種虛擬網(wǎng)格中,每個三角形的頂點與大小及形狀不同的其他三角形的頂點相交闻镶。每個頂點關聯(lián)著大量信息甚脉,包括其在空間中的位置以及有關顏色、紋理及其“法線”(normal)信息儒溉,這些信息可用于確定物體表面的朝向。

計算機隨后將 3D 模型中的三角形轉(zhuǎn)換為 2D 屏幕上的像素或點发钝。根據(jù)存儲在三角形頂點中的數(shù)據(jù)顿涣,能為每個像素分配一個初始顏色值。

進一步的像素處理或“陰影處理”包括根據(jù)場景中光照與像素的碰撞來改變像素顏色酝豪,以及將一個或多個紋理應用于像素涛碑,進而生成應用于像素的最終顏色。

光柵化技術(shù)的計算量異常大孵淘。一個場景中的所有物體模型可使用多達數(shù)百萬個多邊形蒲障,4K 顯示器中有近 800 萬個像素。而且瘫证,屏幕上顯示的每個幀或圖像通常會在顯示器上每秒刷新 30 到 90 次揉阎。

此外,還要使用內(nèi)存緩沖區(qū)(為加快運行速度預留出來的一點臨時空間)在屏幕上顯示之前背捌,預先渲染這些幀毙籽。還需使用景深或“z 緩存” 存儲像素深度信息,以確保在屏幕上特定的像素位置會顯示最上層的物體毡庆,并隱藏其背后的物體坑赡。

這正是為什么擁有豐富圖形功能的現(xiàn)代計算機游戲會依賴于性能強悍的 GPU。

好吧其實不太好理解么抗,我再解釋一下吧毅否。

方塊是攝像機,網(wǎng)格是屏幕蝇刀,每一個小格代表一個像素螟加,三角形是我們要渲染的物體,我們?nèi)切蔚娜齻€頂點分別與攝像機相連吞琐,與屏幕相交與三個點仰迁,根據(jù)這三個點我們就可以畫出攝像機看到三角形

這種投影到像素格子的方法就是是計算機圖形學中的光柵化渲染方法。之后再在我們畫出的圖像上繪制高光陰影等效果顽分,以產(chǎn)生真實的感覺徐许,但他的缺點非常明顯,無法判斷遠近遮擋關系(最后通過z緩沖技術(shù)才得以解決)卒蘸,無法模擬真正的陰影雌隅,反射和折射翻默。

光柵化渲染和光線追蹤渲染的比較可以看這個視頻

https://www.bilibili.com/video/av29458366?from=search&seid=12441170262462105242

在之后的很多年里圖形學的專家們想出了各種奇淫技巧去使光柵化更加真實,這里我簡要的介紹幾種方法恰起。

1.最重要的光照烘焙

解釋起來非常簡單修械,就是使用光線追蹤技術(shù)計算出真實的光影然后儲存在貼圖中,就像下圖這樣检盼,這里我用的是unreal引擎的模板場景肯污,可以看到在烘焙之后真實了很多,如果使用高精度的烘焙吨枉,在不涉及折射和反射材質(zhì)的情況下真實度是不輸于光線追蹤技術(shù)的蹦渣,而且速度快了很多。


2.環(huán)境光遮蔽(Ambient Occlusion)

通過計算光線在物體上的折射和吸收貌亭,在受影響的位置上渲染出適當?shù)年幱凹砦ǎ砑愉秩旧疃龋瑥亩M一步豐富標準光照渲染器的效果圃庭。光遮蔽并不是真實的現(xiàn)象锄奢,而是3D應用程序用來進行光線追蹤,創(chuàng)建陰影錯覺的一種光照技術(shù)剧腻。

在游戲中使用的實際是SSAO(屏幕空間環(huán)境光遮蔽)拘央,這種效果在彎曲處和凹陷處可見,但在平面和凸面上不可見书在,因為它們不會阻擋彼此的光線堪滨。這種效果非常重要,因為沒有它的存在將會令場景缺乏層次感蕊温。

看下圖就非常容易理解了袱箱,在模型相近的位置繪制陰影,以模擬全局光照


3.屏幕空間反射

反射一向是光柵化渲染的難題义矛,而目前主流的解決方法就是屏幕空間反射发笔,但效果差強人意,只能反射屏幕看到的模型凉翻,屏幕外的反射不到了讨,而使用光線追蹤可以很好的解決這個問題。還有一個非常神奇的解決方法制轰,在墻的后面建一個攝像機前计,把看到的渲染出來貼在墻壁表面上,雖然麻煩了點垃杖,但效果倒是挺不錯男杈,崩崩崩用的就是這種方法。

注意看黑色的墻壁调俘,可以看到方塊的發(fā)射


但當攝像機拉近屏幕看不到方塊的時候伶棒,反射就消失了
屏幕空間反射


光線追蹤反射

最后來講一講NVIDIA的實時光線追蹤技術(shù)又有哪些神奇之處吧

首先這是一個閹割版的光線追蹤旺垒,既是是用到了RT core核心專門處理光線追蹤,比傳統(tǒng)cuda處理快上十倍肤无,還是難以做到每秒60幀的渲染先蒋,而且是在低采樣的情況下,不過這可以理解宛渐,畢竟如果是傳統(tǒng)渲染器相同場景竞漾,默認渲染參數(shù),估計要幾十分鐘一幀窥翩,提升可以說是巨大的业岁。

具體我們來看這個視頻https://www.bilibili.com/video/av21086717

基于機器學習的ai降噪技術(shù)和dlss抗鋸齒技術(shù),機器學習的現(xiàn)在可以說是非橱⑺福火了叨襟,在各個領域都有應用繁扎,ai降噪以及dlss就是機器學習和圖形學碰撞出的火花幔荒。至于為什么要降噪和抗鋸齒,這是采樣和屏幕分辨率過低的原因梳玫。

以下是dlss技術(shù)的解釋爹梁,ai降噪同理

在訓練階段,需要使用大量的“顯卡原始輸出圖像”(1080P分辨率或2K分辨率)和“對應的超級計算機抗鋸齒處理過后的圖像”(8K分辨率)這樣的圖像組對這個模型進行訓練提澎,使用深度學習技術(shù)優(yōu)化這個模型姚垃,使得這個模型能夠從低分辨率圖像生成高分辨率圖像,這個過程需要龐大的計算資源盼忌,由英偉達計算积糯,將模型訓練好后將該模型推送給用戶。

降噪前


降噪后

目前在游戲領域應用(有的游戲只是部分應用了光線追蹤技術(shù))

逆水寒:實時光線追蹤和深度學習超級采樣

仙劍奇?zhèn)b傳七:實時光線追蹤反射

戰(zhàn)地5:實時光線追蹤反射

古墓麗影:暗影:實時光線追蹤陰影

星球大戰(zhàn)DEMO:實時光線追蹤反射谦纱、陰影看成、環(huán)境光遮蔽和 NVIDIA DLSS

還有地鐵:離去等少數(shù)幾個

視頻可以看https://www.nvidia.cn/geforce/20-series/rtx/

最后

計算機圖形學發(fā)展了這么多年相關的技術(shù)幾十本書也講不完,我這里也只是相關技術(shù)的科普跨嘉,如果想深入了解的化可以看一些圖形相關的書和網(wǎng)站川慌,當然前提條件是數(shù)學要好,反正我是不會(逃)

寫了這么多如果有疏漏歡迎指正祠乃,下一篇我會從程序和美術(shù)兩個角度講解pbr在游戲中的應用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梦重,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亮瓷,更是在濱河造成了極大的恐慌琴拧,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘱支,死亡現(xiàn)場離奇詭異艾蓝,居然都是意外死亡力崇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門赢织,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亮靴,“玉大人,你說我怎么就攤上這事于置〖氲酰” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵八毯,是天一觀的道長搓侄。 經(jīng)常有香客問我,道長话速,這世上最難降的妖魔是什么讶踪? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮泊交,結(jié)果婚禮上乳讥,老公的妹妹穿的比我還像新娘。我一直安慰自己廓俭,他們只是感情好云石,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著研乒,像睡著了一般汹忠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雹熬,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天宽菜,我揣著相機與錄音,去河邊找鬼竿报。 笑死铅乡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的仰楚。 我是一名探鬼主播隆判,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼僧界!你這毒婦竟也來了侨嘀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤捂襟,失蹤者是張志新(化名)和其女友劉穎咬腕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葬荷,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡涨共,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年纽帖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片举反。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡懊直,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出火鼻,到底是詐尸還是另有隱情室囊,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布魁索,位于F島的核電站融撞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粗蔚。R本人自食惡果不足惜尝偎,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹏控。 院中可真熱鬧致扯,春花似錦、人聲如沸牧挣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瀑构。三九已至,卻和暖如春刨摩,著一層夾襖步出監(jiān)牢的瞬間寺晌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工澡刹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呻征,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓罢浇,卻偏偏與公主長得像陆赋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嚷闭,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容