? ? ? ? 要弄懂什么是光線追蹤渲染帜篇,首先需要讓我們有一種“世界觀”的認(rèn)識(shí)鲸湃,那就是我們?nèi)搜鬯芸吹降娜f事萬物幾乎都是反光或發(fā)光的浓镜,就連黑茫茫的宇宙也有微弱的微波背景輻射锭魔。如果我沒有記錯(cuò)的話蜕企,目前人類所能制造的最黑的(幾乎不反光的)物質(zhì)咬荷,也只能吸收 98 %左右的光線,還是存在微弱的反光糖赔。這就是說萍丐,是物體總是會(huì)反光(或發(fā)光)的(不一定非得是金子),這就是光線追蹤之所以成為可能的基本前提放典。而這些無論是直接發(fā)出的光逝变,還是反射的光,最終射入我們的眼睛成像奋构,就形成了我們“看到的世界”壳影。那么基于這樣的認(rèn)識(shí),我們就不難理解我們?yōu)槭裁茨軌蚩吹竭@五彩繽紛的世界弥臼。光線追蹤渲染的目的就是利用計(jì)算機(jī)圖形技術(shù)(線性代數(shù)及仿射幾何)宴咧,在虛擬的 3D 場(chǎng)景中模擬(仿真)出幾乎與人類觀看客觀真實(shí)世界一致的視覺效果。所謂的實(shí)時(shí)光線追蹤径缅,就是隨著攝像機(jī)視角的變動(dòng)掺栅,后端需要實(shí)時(shí)發(fā)射追蹤光線來重新計(jì)算光照信息烙肺,如果屏幕分別率很高,這個(gè)計(jì)算量是很大的氧卧,對(duì) GPU 的性能要求是很高的桃笙,如果性能達(dá)不到游戲直接會(huì)卡死。
? ? ? ?光追渲染可以實(shí)現(xiàn)電影級(jí)畫質(zhì)的渲染沙绝。這也是傳統(tǒng)的光柵化渲染無法簡(jiǎn)單的做到的搏明。傳統(tǒng)的光柵化渲染技術(shù)發(fā)展到今天,為了盡可能快的渲染出較真實(shí)的畫質(zhì)闪檬,其復(fù)雜度已經(jīng)是當(dāng)初的至少幾何級(jí)數(shù)倍了星著,很多相關(guān)的渲染技術(shù)已經(jīng)復(fù)雜到需要專業(yè)級(jí)數(shù)學(xué)知識(shí)才能理解和運(yùn)用。當(dāng)然有了光追渲染粗悯,不能簡(jiǎn)單的就去否定傳統(tǒng)的光柵化渲染技術(shù)虚循。雖然微軟在其渲染光追渲染的文檔中一開始就說“ 3D GraPhics 15 a Lie ( 3D 圖形是一個(gè)謊言) " ,但光柵化渲染技術(shù)在相當(dāng)長(zhǎng)的一段歷史時(shí)期內(nèi)都是性能與畫質(zhì)折中后的優(yōu)秀技術(shù)方案为黎,甚至在實(shí)時(shí)光追可以實(shí)現(xiàn)的今天及未來的相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)邮丰,因?yàn)橛布阅艿膯栴}行您,光柵化渲染至少還要在我們的手機(jī)上奮戰(zhàn)很長(zhǎng)一段時(shí)間铭乾,也就是說兩種渲染技術(shù)會(huì)在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)并存。而未來實(shí)時(shí)光追渲染還將主要在高性能的 Pc 端嶄露頭角娃循,因此建議大家對(duì)兩種技術(shù)都要熟悉和了解炕檩。在光線追蹤渲染中,并不是直接模擬一條條從光源射出的光線捌斧,看它經(jīng)過如何的反射折射或直射等光學(xué)過程進(jìn)入我們的眼睛笛质,想象一下這樣一來其實(shí)大多數(shù)光線都因?yàn)闆]有最終射入眼睛而浪費(fèi)了,同時(shí)也浪費(fèi)了很多計(jì)算資源捞蚂,而這種浪費(fèi)是完全沒有必要的妇押。真正的光線追蹤則是反其道而行之:假設(shè)我們眼睛能夠接收到什么光線,并將這些光線從眼睛中反向發(fā)射出來姓迅,先射到屏幕上敲霍,再?gòu)钠聊坏南袼厣涞綀?chǎng)景中(這讓我突然想起某位古希臘先哲在試圖解釋人類視覺原理時(shí)說人類眼睛中射出了無數(shù)的觸手觸碰到了物體,于是人類就有了視覺丁存。在此向他老人家致敬肩杈! ) ,接著計(jì)算和追蹤這些反著走的光線如何從屏幕上的像素上射出解寝,再經(jīng)過直射扩然、折射或反射回到光源,如果光線回到了光源聋伦,那么這條從眼睛射出的光線就是可見的夫偶,我們就調(diào)用相關(guān)的著色程序?yàn)檫@個(gè)像素點(diǎn)著上顏色(未著色的就默認(rèn)為黑色或天空背景顏色)界睁,當(dāng)從眼睛中射出的所有光線都被著色(或默認(rèn)色)完畢后,一副圖像就完成了兵拢。這就是光線追蹤的核心基本原理及其名稱的來歷晕窑。當(dāng)我們能夠在 1 秒鐘內(nèi)以超過 25 幀以上的速度實(shí)時(shí)來完成光線追蹤渲染過程時(shí),根據(jù)動(dòng)畫原理卵佛,我們就可以看到連續(xù)的畫面了(有人稱之為 4D 技術(shù))杨赤,這樣一來就被稱為實(shí)時(shí)光線追蹤渲染了。如果再給這個(gè)過程加上人機(jī)交互及其他多媒體手段截汪,那么 3D 游戲疾牲、 3D 高仿真設(shè)計(jì)等等也就可以實(shí)現(xiàn)了。其實(shí)從另一個(gè)方面來說衙解,即使我們可能不了解實(shí)時(shí)光線追蹤渲染阳柔,但是對(duì)于光線追蹤渲染應(yīng)該很不陌生了,因?yàn)閹缀跛械倪\(yùn)用了特效的電影作品都使用的是光線追蹤渲染蚓峦,并且大多數(shù)都是基于 CPU 進(jìn)行渲染的舌剂,這些特效的渲染不是實(shí)時(shí)的,而是一幀畫面就需要渲染幾小時(shí)甚至幾天時(shí)間暑椰,同時(shí)其渲染細(xì)膩程度也是我們現(xiàn)在所說的實(shí)時(shí)光線追蹤渲染還無法達(dá)到的霍转。
補(bǔ)充:
●圖形渲染(Rendering)一般有兩種方法:光線追蹤和光柵化
●光柵化是將一個(gè)圖元轉(zhuǎn)變?yōu)橐粋€(gè)二維圖像的過程。二維圖像上每個(gè)點(diǎn)都包含了顏色一汽、深度和紋理數(shù)據(jù)避消。將該點(diǎn)和相關(guān)信息叫做一個(gè)片元(fragment)。
●光柵化的目的召夹,是找出一個(gè)幾何單元(比如三角形)所覆蓋的像素岩喷。
●粗略地講:你模型的那些頂點(diǎn)在經(jīng)過各種矩陣變換后也僅僅是頂點(diǎn)。而由頂點(diǎn)構(gòu)成的三角形要在屏幕上顯示出來监憎,除了需要三個(gè)頂點(diǎn)的信息以外纱意,還需要確定構(gòu)成這個(gè)三角形的所有像素的信息。光柵化就是干這個(gè)的鲸阔。