iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0
Software Development

渲染與GPU編程系列 第 30

延伸:光柵化 vs 光線追蹤:兩種渲染方式的比較與取捨

  • 分享至 

  • xImage
  •  

一句話先懂:
**光柵化(Rasterization)**像是在「投影機前放投影片」——把 3D 三角形投到 2D 螢幕上再填色;
光線追蹤(Ray Tracing)像是「從眼睛往場景射光線」——沿著路徑找它碰到了什麼、怎麼反射/折射。
兩者都能做出好看的畫面,但
思路、成本與優缺點完全不同


1)核心概念比一比(用生活比喻)

光柵化(投影+填色)

  • 流程:頂點 → 投影到螢幕 → 三角形覆蓋哪些像素 → 對這些像素算顏色。
  • 比喻:拿手電筒照向紙板剪成的形狀,影子落在牆上的範圍就是你的像素,接著把範圍內的顏色填滿。
  • 強項超快、硬體成熟(數十年最佳化),適合遊戲即時畫面。
  • 弱項:真實反射/屈折/軟陰影/全域光照要「額外技巧」拼起來(SSR、IBL、陰影貼圖…),稍複雜。

光線追蹤(追蹤光路徑)

  • 流程:對每個像素,從眼睛射一條光線,找第一個打到的物體;
    如有反射/折射,就再射新光線,直到光能量微小或達到次數上限。
  • 比喻:問一顆球「你看出去看到什麼?再請它看到的東西繼續看…」。
  • 強項真實的陰影、反射、折射、間接光很自然。
  • 弱項:計算量大,若要即時、需要加速結構(BVH/RTX)+降噪;畫面有雜訊要濾掉。

2)流程圖(超簡化版)

光柵化管線(一眼看懂)

[模型頂點] → 頂點著色 → 投影到螢幕
          → 三角形覆蓋測試(光柵化)
          → 深度測試(誰在前面)
          → 像素著色(貼圖/光照)
          → 合成到畫面

光線追蹤(每像素發出光線)

for each pixel:
  ray = from camera through pixel
  hit = intersect(ray, scene)   ← 需要 BVH/加速結構
  if hit:
     color = 直接光 + 反射/折射(再丟次級 ray)
     直到次數上限或能量很小
  else:
     color = 背景

3)品質差在哪?(用常見視覺效果解釋)

效果 光柵化(怎麼做) 光線追蹤(怎麼做) 直覺結果
硬陰影/軟陰影 陰影貼圖、PCF/PCSS、CSM 從命中點往光源發射陰影光線 RT 陰影自然、成本大;光柵化陰影要調很多參數
鏡面反射 SSR(螢幕空間)、環境貼圖 往反射方向發射次級光線 RT 反射最準;SSR 看不到螢幕外物體
折射 偏公式+貼圖 往折射方向射光線 RT 玻璃/水真實;光柵化較近似
全域光照 SSAO、烘焙、LPV、SDF… 路徑追蹤(多次反彈) RT/Path Tracing 更自然但易噪點
半透明/自陰影 多 Pass 排序、近似 直接射線測可見性 RT 一致性好

4)效能:為什麼光柵化快?為什麼 RT 貴?

  • 光柵化

    • 把三角形一次投影到多個像素(幾何→像素的「推」);
    • 早期深度測試(Early-Z)、快取、固定功能硬體都很成熟 → 吞吐量驚人
  • 光線追蹤

    • 每個像素要找「第一個打到的東西」→ 幾何相交測試很多;
    • 必須用 BVH(階層包圍盒)加速;
    • 多個次級光線(反射/折射/陰影)會成倍增加工作量;
    • 降噪(Denoiser)又是一筆成本。

口訣:光柵化快,是因為固定流程高度最佳化;RT 真是強,但每個像素要做的工作不確定、而且很多


5)硬體與 API 支援

  • 光柵化:OpenGL、Direct3D、Vulkan、WebGPU(核心即是光柵化+著色器)。

  • 光線追蹤

    • DXR(DirectX Raytracing)
    • Vulkan Ray TracingVK_KHR_acceleration_structureVK_KHR_ray_tracing_pipeline
    • NVIDIA RTX 硬體光追核心、AMD Ray AcceleratorsIntel RT Units
    • WebGPU 目前走實驗/替代方案(多半用 compute 模擬或混合式)。

6)選哪一個?簡單決策樹

你要即時 60–120 FPS 的互動內容(遊戲、AR/VR)
光柵化為主,再混合少量 RT(陰影、反射、AO)提升真實感。

你要高寫實的靜態/動畫畫面(離線渲染、影片、建築可視化)
光線追蹤/路徑追蹤為主,必要時做降噪與離線算圖。

你要在瀏覽器跑
→ 目前多為 光柵化/compute 混合;RT 以實驗為主,或透過近似法。


7)混合式渲染(實務最常見)

把「最需要真實」的部分交給 RT,其餘用光柵化吞吐:

  • RT Shadows:只用於主光源或重要區域,其他仍用陰影貼圖。
  • RT Reflections:鏡面材質/水面用 RT,其餘用 SSR + IBL。
  • RT AO / GI:少量射線(1–2 spp)+時域累積降噪,在多幀慢慢收斂。
  • DLSS/FSR/XeSS:用超分辨率與時域重建把少樣本 RT 結果拉乾淨、拉清晰。

混合的精神:把重武器只用在最有視覺回報的地方


8)工程面取捨(做專案時要考慮的)

  1. 平台目標:PC/主機/行動裝置?支援 RT 的比例?

  2. 內容特性:鏡面、玻璃、水很多嗎?室內(反彈多)還是戶外(陰影大片)?

  3. 視覺目標:寫實到什麼程度?噪點能接受嗎?

  4. 預算:美術與工程時間、降噪器與資源管線成本。

  5. 效能預算

    • 光柵化:像素/幾何負載、後處理、混色/透明堆疊。
    • RT:AS(加速結構)建置/更新、Ray Budget(光線數/反彈數)、降噪成本。
  6. 可維護性:混合方案往往最實際,但系統複雜度提升;要有良好 Debug/Profiler 流程。


9)品質 vs 成本:常見「等價交換」

想要的效果 光柵化做法(成本/限制) RT 做法(成本/限制)
更真實的陰影 PCSS / VSM / CSM,參數多、易出現閃爍或漏光 1 ray/px 就很棒,但要降噪;多光源成本上升
可靠的鏡面反射 SSR + 反射探頭;螢幕外物體看不到 RT 一次到位;粗糙反射需多樣本+降噪
室內間接光 光照貼圖烘焙、DDGI、SDF GI 小樣本 GI + 累積;降噪與穩定性是關鍵
複雜透明 多 Pass 排序、近似 RT 可自然處理,但樣本/成本增

FAQ(新手最常問)

Q:為什麼 RT 畫面有「沙沙的雜點」?
A:因為你只抽樣到少量光線(樣本不足),需要多幀累積降噪(temporal + spatial)。

Q:RT 一定比較慢嗎?
A:在相同視覺目標下,多數時候 RT 成本更高;但如果你的需求就是「高真實反射/折射/陰影」,RT 反而更直接、更可控

Q:手機可以做 RT 嗎?
A:支援有限且成本高。實務上仍以光柵化為主,配合暫時性與螢幕空間技術。

Q:我應該全 RT 嗎?
A:即時內容幾乎都走混合式;全 RT(Path Tracing)已有展示,但通常需要強力硬體與重建/降噪技術。


一句話總結

光柵化 = 又快又成熟的投影+填色;光線追蹤 = 自然寫實但計算大。
做即時互動:光柵化為主、RT 補關鍵效果;做離線高真實:RT/Path Tracing 為主
專案裡最實用的策略是:把有限的 RT 預算,用在最有視覺回報的地方,其餘交給光柵化的百寶箱。


上一篇
延伸:MPI入門 叢集式運算
下一篇
結語|把光與算力化成作品的這 30 天
系列文
渲染與GPU編程31
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言