什麼是光線追蹤?又是如何讓遊戲場景“活”起來的?

光線追蹤(Ray Tracing) ,俗稱光追,相信大家都略有耳聞,在還沒了解之前,我只知道在玩遊戲時,”開光追=提高遊戲畫面質量=遊戲畫面更加真實“,甚至是以假亂真的程度,同時開光追還會掉幀。

那些原本略顯生硬的遊戲場景,一旦開啓光追,陽光穿過樹葉的斑駁光影會隨角度移動,玻璃幕牆會清晰倒映出遠處的建築,甚至連角色盔甲上的反光都帶着真實世界的細膩質感,彷彿瞬間從 “遊戲畫面” 跳進了 “電影場景”

什麼是光線追蹤?

實際上,光線追蹤是一種渲染技術,它基於模擬光線在場景中的傳播行爲來生成逼真的圖像。

其核心原理是從虛擬攝像機(觀察點)發射出大量光線,這些光線會與場景中的物體(如球體、平面等幾何物體)發生相交測試計算出光線與物體的交點、交點處的光照效果(包括反射、折射、陰影等),然後根據這些信息確定最終像素的顏色,通過追蹤衆多光線來構建出整個圖像。

這一技術最早在 16 世紀由藝術家阿爾布雷希特・丟勒提出,當時被用作透視繪畫的方法。在計算機圖形學領域,幾十年來它一直被用於電影和動畫製作,以打造震撼的視覺效果。

由於光線追蹤模擬的是光線的真實物理傳播規律,所以能自然地呈現出諸多逼真效果:比如反射中能清晰看到其他物體、光線穿過透明材質時的真實折射,以及帶有自然的柔和陰影。

光柵化則需要通過各種近似方法和技術來模擬這些效果,所以有時會顯得不夠真實。

從歷史來看,光線追蹤的計算量過大,無法用於電子遊戲等實時應用場景,因此光柵化成爲了主流標準。

直到2018年,這一年也被認爲是光線追蹤元年,GDC 2018上光線追蹤才正式進入大衆的視野。

在這一年…

  • 微軟宣佈DirectX Ray Tracing(DRX)的問世;

  • NVIDIA、ILMxLAB、UE4聯合發佈了基於實時光線追蹤的具有電影級視覺效果的《星球大戰》短片

  • NVIDIA發佈了RTX Tehnology Demo以及Project Sol Cinematic Demo Part 1;

  • EA SEED團隊帶來了PICA實時光線追蹤Demo;

  • Remedy的Northlight引擎帶來了Ray Tracing in North Light Demo;

  • Futuremark團隊發佈了DirectX Raytracing Tech Demo。

光柵渲染和光線追蹤渲染有什麼不同?

光柵化是過去幾十年遊戲渲染的主流技術,與實時光線追蹤在渲染邏輯、性能、真實感上存在本質差異。

光柵化的工作流程是:獲取場景中的 3D 模型,將其投射到屏幕的 2D 平面上;判斷屏幕上哪些像素被每個物體覆蓋,再根據物體的紋理、光源位置、簡化的光照模型等因素,計算這些像素的顏色。

可以把它想象成 “在畫布上逐個繪製物體來完成一幅畫” 的過程。

其實目前遊戲裏即使用這光柵渲染,得到的畫面效果也不比光線追蹤差,因爲這是渲染時用到的成像方法的不同,決定畫面是否逼真的,最關鍵還是要看渲染方程,要看每個像素點的顏色值是怎麼算出來的。

但是光線追蹤自然有它的優勢,因爲它就是模仿真實光線的傳播行爲,因此給很多光影效果的模擬提供巨大的方便,在物體陰影上,在鏡面反射的內容表現上,光線追蹤都能以很自然地方式去模擬,代碼實現上也是非常自然便利的(意思是在計算的時候,很多要用到的數據隨用隨有)。

而要用光柵渲染去實現同樣的陰影效果,礙於成像方法的不同,該計算過程會變得非常複雜,難以實現(缺少要計算的直接數據,要繞路子或者費勁去算出需要的數據)。

所以這兩種渲染方法最顯著的差異就在於成像方法不同所帶來的計算便利性,這種便利性能夠極大地影響代碼上和計算上能夠模擬真實光照的程度。

二者的核心區別:

光線追蹤的優勢

作爲一種基於物理的渲染方式,光線追蹤所實現的效果是十分接近真實場景的,因爲其很好的模擬了光在傳播過程中發生的反射、折射、散射等現象,使得物體的材質屬性得到很好的表現,但是由於模擬光線傳播過程需要使用遞歸算法,渲染速度遠不如光柵化。

近些年,在工業界和學術界的共同努力下,光線追蹤逐漸實時化,通過對光線算法的不斷近似和簡化,實時光線追蹤得以實現,並在3D遊戲中得到了不錯的應用。

光線追蹤的核心應用

光線追蹤在遊戲中最核心的應用體現在 “陰影、環境光遮蔽、反射、全局光照” 四大效果,雖然實現邏輯各有側重,但都是基於 “光線與物體的交互” 這一核心原理來實現的。

1. 光線追蹤陰影(Ray-Traced Shadows)

傳統光柵化陰影(如陰影貼圖)易出現 “鋸齒、漏影、分辨率不足” 等問題,光線追蹤陰影通過 “逐像素向光源投射光線” 實現自然的軟陰影。

✅實現邏輯:從物體表面的每個點向 “光源” 投射多條 “陰影光線”(而非單條)

統計 “能到達光源的光線數量”——若所有光線被阻擋,該點爲 “全陰影”;若部分光線到達光源,該點爲 “半陰影”(軟陰影邊緣);

✅優勢:支持 “任意形狀的光源”(如球形光源、矩形光源),自動生成與光源尺寸匹配的軟陰影,且無 “陰影貼圖分辨率限制” 導致的鋸齒

✅代表作品:《古墓麗影:暗影》採用光線追蹤陰影提升場景真實感。

2. 光線追蹤環境光遮蔽(Ray-Traced Ambient Occlusion, RTAO)

環境光遮蔽(AO)模擬物體縫隙和凹陷處的自然暗部效果,克服了屏幕空間AO僅能處理屏幕內物體的限制。

✅實現邏輯:從物體表麪點向 “半球形空間”(模擬環境光來自各個方向)投射大量次級光線;

統計 “被其他物體阻擋的光線比例”—— 阻擋比例越高,該點的 AO 效果越強(顏色越暗);

✅性能優化:由於需要投射大量光線,UE 採用 “時間累積(Temporal Accumulation)” 技術 —— 每幀僅投射少量隨機方向的光線,將多幀結果疊加,既降低單幀計算量,又保證效果平滑;

✅優勢:可捕捉 “屏幕外物體對當前點的遮蔽”(如室內牆角被遠處傢俱遮擋的暗部),避免 SSAO 的 “邊緣截斷” 問題。

3. 光線追蹤反射(Ray-Traced Reflections)

傳統屏幕空間反射(SSR-Screen Space Reflection)僅能反射 “屏幕內可見的物體”,而光線追蹤反射則支持實現全場景、無限距離的精準反射,特別是光滑表面的反射效果遠超屏幕空間反射。

✅實現邏輯:從攝像機投射的主光線與物體表面相交後,根據物體表面 “粗糙度” 計算 “反射方向”;

沿反射方向投射 “反射光線”,該光線與其他物體的交點顏色即爲 “反射顏色”;

✅表面粗糙度處理:光滑表面(如鏡面、金屬):反射光線方向唯一,僅需 1 條反射光線;

粗糙表面(如磨砂玻璃、混凝土):反射光線呈 “錐形分佈”,需投射大量光線覆蓋錐形區域,計算量呈指數級增長;

✅性能優化:設置 “粗糙度閾值”——當表面粗糙度超過閾值時,自動切換爲光柵化的屏幕空間反射,避免粗糙表面反射消耗過多性能;

✅代表作品:《戰地風雲 5》通過光線追蹤反射提升水面、金屬裝甲的真實感。

4. 光線追蹤全局光照(Ray-Traced Global Illumination, RT GI)

全局光照(GI)模擬 “光線在場景中多次反彈” 的效果(如陽光照射到紅色牆壁後,反彈的光線使周圍物體略帶紅色調),傳統光柵化需通過 “光照烘焙” 預計算靜態 GI,無法支持動態場景,光線追蹤 GI 則實現 “動態實時 GI”。

✅實現邏輯:

主光線與物體表面相交後,投射 “間接光照光線”,模擬光線的第一次反彈;

間接光照光線與其他物體相交後,再次反射,模擬第二次反彈,以此類推(通常最多計算 2-3 次反彈,否則計算量過大);

每次反彈時,光線會 “吸收物體表面顏色” 並 “損失能量”(距離越遠,能量越弱),最終疊加到物體表面顏色中;

✅技術挑戰:光線追蹤 GI 是 “計算量最大” 的光線追蹤效果,單次反彈的計算量相當於多次反射或陰影,因此目前僅在少數高端遊戲中部分應用。

✅代表作品:《地鐵:逃離》通過光線追蹤 GI 打造室內真實光影反彈。

感謝閱讀、點贊和充電🔋

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com