解密NVIDIA Ray Tracing

 2018-03-27 11:02:03.0

光線追踪是大家熟悉而又陌生的技術,去過電影院的人肯定見過,然而除了計算機圖形領域的研究者,外界對該技術的了解知之甚少。


光線追踪是現代電影生成或增強特殊效果所依賴的一種技術,比如逼真的反射、折射和陰影。正是這些效果的運用打造出了科幻史詩片中的星際戰士。這種技術會使飆車場景令人血脈噴張,使戰爭片的火焰、煙霧和爆炸場景看起來像身臨其境。


光線追踪生成的影像與攝影機拍攝的影像很難區分開來。真人電影將計算機生成的效果與真實拍攝的影像無縫融合在一起,而動畫電影則通過光線和陰影隱匿用數字方式生成的場景,力求達到攝影機拍攝般的傳神效果。


提及光線追踪,一種很簡便的方法就是立即環顧玩家的四周。玩家看到的物體被光束照亮,現在轉過身,追踪這些光束從玩家的眼睛向後到與光線交互的物體的路徑,這就是光線追踪。



如果玩家最近去看過電影,應該能在動作片中看到光線追踪。


但在過去,計算機硬件的速度不夠快,無法實時使用這些技術,比如在視頻遊戲中。電影製作人可以隨心所欲地花時間來渲染單個幀,因此他們會在渲染場中離線渲染。而視頻遊戲畫面轉瞬即逝。因此,人們依賴於另一種技術來處理大部分實時圖形,即光柵化。


什麼是光柵化?


長期以來,實時計算機圖形一直使用一種稱為"光柵化"的技術在二維屏幕上顯示三維物體。該技術速度快,且效果足夠好,儘管它仍然比不上光線追踪所能達到的水平。


借助光柵化技術,可以在屏幕上通過用於創建物體3D模型的虛擬三角形或多邊形網格創建物體。在這種虛擬網格中,每個三角形的角(稱為頂點)與大小和形狀不同的其他三角形的頂點相交。每個頂點關聯著大量信息,包括其在空間中的位置以及有關顏色、紋理及其"正常形式"的信息,這些信息用於確定物體所朝向的表面的形式。


計算機隨後將3D模型的三角形轉換為2D屏幕上的像素或點。可以根據存儲在三角形頂點中的數據為每個像素分配一個初始顏色值。


進一步像素處理或"陰影處理",包括基於場景中的光線如何碰撞像素改變像素顏色,以及將一個或多個紋理應用於像素,從而結合生成應用於像素的最終顏色。


這種技術的計算量異常大。一個場景中的所有物體模型可以使用多達數百萬個多邊形,4K顯示器中有近800萬個像素。而且,屏幕上顯示的每個幀或圖像通常會在顯示器上每秒刷新30到90次。


此外,還要使用內存緩衝區(為加快運行速度預留出來的一點臨時空間)在即將到來的幀於屏幕上顯示之前預先渲染這些幀。還需使用深度或"z緩存"存儲像素深度信息,以確保在屏幕上顯示像素的xy屏幕位置上的頂層物體,並且頂層物體背後的物體保持隱藏狀態。


這正是圖形豐富的現代計算機遊戲依賴於性能強悍的GPU的原因。


什麼是光線追踪?


光線追踪技術與此不同。在真實世界中,我們看到的3D物體被光源照亮,且光子可以在到達查看者的眼睛以前從一個物體反彈到另一個物體。


光線可能會被某些物體阻擋,形成陰影,或可能會從一個物體反射到另一個物體。比如我們看到一個物體的圖像反射在另一個物體表面的情景。然後會發生折射-光線穿過透明或半透明物體(如玻璃或水)時發生變化的情況。


光線追踪通過從我們的眼睛(觀景式照相機)反向追踪光線捕捉這些效果,這種技術是IBM的Arthur Appel於1969年在《Some Techniques for Shading Machine Renderings of Solids》中提出的。此技術可追踪通過2D視表面上每個像素的光線的路徑,並應用到場景的3D模型中。


十年後才迎來下一個重大突破。Turner Whitte在1979年發表論文《An Improved Illumination Model for Shaded Display》,闡述瞭如何捕捉反射、陰影和反射,他目前就職於NVIDIA研究事業部。




Turner Whitted在1979年發表的論文幫助光線追踪技術在翻拍電影領域的運用實現飛躍發展。利用Whitted的技術,當光線遇到場景中的物體時,根據物體表面上碰撞點處的顏色和光照信息可以計算出像素的顏色和照明度。如果光線在到達光源之前反射或通過不同物體的表面,則根據所有這些物體的顏色和光照信息可以計算出最終的像素顏色。20世紀80年代的其他兩篇論文為計算機圖形革命奠定了其餘的知識基礎,這場革命顛覆了電影的製作方式。


1984年,Lucasfilm的Robert Cook、Thomas Porter和Loren Carpenter詳細介紹了光線追踪如何結合眾多常見的電影製作技術(包括動態模糊、場景深度、半影、半透明和模糊反射),而這些效果當時還只能依靠攝影機製作。


兩年後,加州理工學院Jim Kajiya教授發表論文《The Rendering Equation》,完成了將計算機圖形生成方式移植到物理學的工作,更好地展現了光在整個場景中的散射方式。


將這項研究與現代GPU結合起來取得了顯著的成果,計算機生成的圖像捕捉的陰影、反射和折射能夠以假亂真,與真實世界的照片或視頻很難區分開來。正是這種真實感讓光線追踪開始征服現代電影製作領域。


這種技術的計算量同樣非常大。正因如此,電影製作人才依賴於大量的服務器或渲染農場。而且,渲染複雜的特殊效果可能需要花上幾天甚至幾週的時間。


可以肯定的是,許多因素都會影響光線追踪的整體圖形質量和性能。實際上,由於光線追踪的計算量異常大,此技術通常用來渲染場景中視覺質量和現實感受益於此技術更多的部分,而場景的其餘部分則使用光柵化進行渲染。光柵化仍能提供出色的圖形質量。


未來將如何發展?


隨著GPU性能日益強悍,下一階段理應是讓更多人享受到光線追踪技術帶來的好處。例如,借助光線追踪工具(如Autodesk的Arnold、Chaos Group的V-Ray或Pixar的Renderman)和性能強悍的GPU,產品設計師和建築師使用光線追踪在幾秒內即可生成逼真的產品模型,促進他們更加有效的協作,並省去昂貴的原型設計環節。




光線追踪已經向建築師和照明設計師證明了它的價值,他們正在利用這些功能對光線與設計如何交互進行建模。


隨著GPU的計算能力日益提升,視頻遊戲將成為此技術的下一個前沿陣地。NVIDIA在星期一宣布推出NVIDIA  RTX。這是一種光線追踪技術,可為遊戲開發者提供電影級畫質的實時渲染。它是NVIDIA在計算機圖形算法和GPU架構領域經過10年努力所取得的成果。


它包含在NVIDIA Volta架構GPU上運行的光線追踪引擎。它的設計支持通過各種接口進行光線追踪,立足於此,NVIDIA與微軟緊密合作,通過微軟新的DirectX  Ray tracing (DXR) API提供全面的RTX支持。


為了幫助遊戲開發者利用這些新功能,NVIDIA還宣布GameWorks SDK將添加一個光線追踪降噪模塊。更新版GameWorks SDK即將推出,其中包含光線追踪區域陰影和光線追踪光澤反射。


所有這一切都有助於遊戲開發者和其他人將光線追踪技術應用到他們的工作中,以創造更真實的反射、陰影和折射。


如此一來,玩家在家中玩遊戲時便會享受到更多如同電影院好萊塢大片的電影級畫質,有更好的視覺效果及遊戲體驗。缺點還是有的:玩家得自己做爆米花了。


請閱讀Matt Phar、Wenzel Jakob和Greg Humphreys合著的《Physically Based Rendering:From Theory to Implementation》。本書提供了現代逼真渲染技術的數學理論以及將其應用於工作的實踐技巧。


想知道這對遊戲玩家意味著什麼嗎?請參閱GeForce.com上的"NVIDIA RTX技術:讓遊戲實現實時光線追踪"

文章來源:中關村在線