對大家來說,光線追蹤是一項既熟悉又陌生的技術。說熟悉,是因為可能大家其實都見過;說陌生,是因為除了計算機圖形領域的專家,真正了解該技術的人可能為數不多。
現代電影有賴於光線追蹤技術來生成或強化特效,包括逼真的反射、折射和陰影效果。正是由於運用了這些效果,才使得史詩級科幻片中的星際戰鬥機如此栩栩如生。光線追蹤能夠助力打造令人血脈噴張的飆車場景,也能使戰爭片的火焰、煙霧和爆炸場景更加真實。
光線追蹤生成的影像與攝影機拍攝的影像很難區分開來。真人動作電影將計算機生成的效果與真實拍攝的影像無縫融合,而動畫電影則能夠通過光線和陰影隱藏用數字方式生成的場景,以達到如攝影機拍攝般的逼真效果。
什麼是光線追蹤?
想了解光線追蹤,你可以環顧四周,找到被光線照亮的物體,沿著到達視點的光線反方向進行追蹤,就是光線追蹤。
如果你最近去過電影院,就能實際見到光線追蹤。
但在過去,計算機硬體的速度不夠快,無法做到實時。比如在視頻遊戲中,電影製作人渲染單個幀的時間可能很長,因此他們會在渲染農場中離線渲染。而視頻遊戲畫面轉瞬即逝。因此,人們依賴於另一種技術來處理大部分實時圖形,即光柵化。
什麼是光柵化?
長期以來,實時計算機圖形一直使用一種稱為「光柵化」的技術在二維屏幕上顯示三維物體。該技術速度快,且效果足夠好,儘管它仍然無法達到光線追蹤所能達到的水平。
藉助光柵化技術,可通過虛擬三角形或多邊形網格來創建物體 3D 模型。在這種虛擬網格中,每個三角形的頂點與大小及形狀不同的其他三角形的頂點相交。每個頂點關聯著大量信息,包括其在空間中的位置以及有關顏色、紋理及其「法線」(normal)信息,這些信息可用於確定物體表面的朝向。
計算機隨後將 3D 模型中的三角形轉換為 2D 屏幕上的像素或點。根據存儲在三角形頂點中的數據,能為每個像素分配一個初始顏色值。
進一步的像素處理或「陰影處理」包括根據場景中光照與像素的碰撞來改變像素顏色,以及將一個或多個紋理應用於像素,進而生成應用於像素的最終顏色。
光柵化技術的計算量異常大。一個場景中的所有物體模型可使用多達數百萬個多邊形,4K 顯示器中有近 800 萬個像素。而且,屏幕上顯示的每個幀或圖像通常會在顯示器上每秒刷新 30 到 90 次。
此外,還要使用內存緩衝區(為加快運行速度預留出來的一點臨時空間)在屏幕上顯示之前,預先渲染這些幀。還需使用景深或「z 緩存」 存儲像素深度信息,以確保在屏幕上特定的像素位置會顯示最上層的物體,並隱藏其背後的物體。
這正是為什麼擁有豐富圖形功能的現代計算機遊戲會依賴於性能強悍的 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 Research。
Turner Whitted 1979 年發表的論文開啟了光線追蹤的文藝復興時代,為電影領域帶來了變革。
利用 Whitted 的技術,當光線投射到場景中的物體時,根據物體表面上碰撞點處的顏色和光照信息可以計算出像素的顏色和照明度。如果光線在到達光源之前反射或通過不同物體的表面,則根據所有物體的顏色和光照信息可以計算出最終的像素顏色。
20 世紀 80 年代的另外兩篇論文也同樣為計算機圖形革命奠定了知識基礎,掀起了計算機圖形的革命,顛覆了電影的製作方式。
1984 年,Lucasfilm 的 Robert Cook、Thomas Porter 和 Loren Carpenter 詳細介紹了光線追蹤如何結合眾多常見的電影製作技術(包括動態模糊、景深、半影、半透明和模糊反射),而這些效果當時還只能依靠攝影機製作。
兩年後,加州理工學院 Jim Kajiya 教授發表論文《The Rendering Equation》從物理學的角度審視了計算機圖形的生成,更好地展現了光線在整個場景中的散射方式。
這項研究與現代 GPU 的結合取得了顯著的成果,計算機生成圖像捕捉的陰影、反射和折射效果能夠以假亂真,與真實世界的照片或視頻很難區分開來。正是這種真實感讓光線追蹤開始全面進入了現代電影製作領域。
這款由Enrico Cerica使用OctaneRender創建的計算機生成圖像,顯示了光線、窗戶透射的光、以及燈架上倒映在地板上和反射在相框上形成的圖像。
這種技術的計算量同樣非常大。正因如此,電影製作人才依賴大量的伺服器或渲染農場。而且,渲染複雜的特殊效果可能需要花上幾天甚至幾周的時間。
可以肯定的是,許多因素都會影響光線追蹤的整體圖形質量和性能。實際上,由於光線追蹤是相當計算密集型的,因此通常採用光線追蹤來渲染場景中最有助於提升視覺效果和現實感受的部分,而場景的其餘部分則使用光柵化進行渲染。光柵化仍能提供出色的圖形質量。
光線追蹤未來將如何發展?
隨著 GPU 性能日益強悍,下一步理應是讓更多人享受到光線追蹤技術帶來的好處。例如,藉助光線追蹤工具(如 Autodesk 的 Arnold、Chaos Group 的 V-Ray 或 Pixar 的 Renderman)和性能強悍的 GPU,產品設計師和建築師能夠使用光線追蹤,在幾秒內即可生成逼真的產品模型,以便他們更加有效地協作,並免去了成本不菲的原型設計環節。
光線追蹤已經向建築師和照明設計師證明了它的價值所在,他們正在利用光線追蹤對光線與設計如何交互進行建模。
隨著GPU的計算能力日益提升,視頻遊戲將成為此技術的下一個前沿陣地。NVIDIA 在早前宣布推出 NVIDIA RTX。這是一種光線追蹤技術,可為遊戲開發者提供電影級畫質的實時渲染。它是 NVIDIA 在計算機圖形和GPU架構領域經過10年努力所取得的成果。
它包含在 NVIDIA Volta 架構 GPU 上運行的光線追蹤引擎,支持通過各種接口進行光線追蹤,NVIDIA 與微軟緊密合作,通過微軟新的 DirectX Raytracing (DXR) API 提供全面的 RTX 支持。
為幫助遊戲開發者利用這些新功能,NVIDIA 還宣布 GameWorks SDK 將添加一個光線追蹤降噪模塊。更新版 GameWorks SDK 即將推出,其中包含光線追蹤區域陰影和光線追蹤光澤反射。
所有這一切都有助於遊戲開發者等將光線追蹤技術應用到其工作中,以創建更真實的反射、陰影和折射。
如此一來,玩家在家中玩遊戲時便能享受到電影級畫質、更佳的視覺效果及遊戲體驗。