一句話先懂:
**光柵化(Rasterization)**像是在「投影機前放投影片」——把 3D 三角形投到 2D 螢幕上再填色;
光線追蹤(Ray Tracing)像是「從眼睛往場景射光線」——沿著路徑找它碰到了什麼、怎麼反射/折射。
兩者都能做出好看的畫面,但思路、成本與優缺點完全不同。
[模型頂點] → 頂點著色 → 投影到螢幕
→ 三角形覆蓋測試(光柵化)
→ 深度測試(誰在前面)
→ 像素著色(貼圖/光照)
→ 合成到畫面
for each pixel:
ray = from camera through pixel
hit = intersect(ray, scene) ← 需要 BVH/加速結構
if hit:
color = 直接光 + 反射/折射(再丟次級 ray)
直到次數上限或能量很小
else:
color = 背景
效果 | 光柵化(怎麼做) | 光線追蹤(怎麼做) | 直覺結果 |
---|---|---|---|
硬陰影/軟陰影 | 陰影貼圖、PCF/PCSS、CSM | 從命中點往光源發射陰影光線 | RT 陰影自然、成本大;光柵化陰影要調很多參數 |
鏡面反射 | SSR(螢幕空間)、環境貼圖 | 往反射方向發射次級光線 | RT 反射最準;SSR 看不到螢幕外物體 |
折射 | 偏公式+貼圖 | 往折射方向射光線 | RT 玻璃/水真實;光柵化較近似 |
全域光照 | SSAO、烘焙、LPV、SDF… | 路徑追蹤(多次反彈) | RT/Path Tracing 更自然但易噪點 |
半透明/自陰影 | 多 Pass 排序、近似 | 直接射線測可見性 | RT 一致性好 |
光柵化:
光線追蹤:
口訣:光柵化快,是因為固定流程高度最佳化;RT 真是強,但每個像素要做的工作不確定、而且很多。
光柵化:OpenGL、Direct3D、Vulkan、WebGPU(核心即是光柵化+著色器)。
光線追蹤:
VK_KHR_acceleration_structure
、VK_KHR_ray_tracing_pipeline
)你要即時 60–120 FPS 的互動內容(遊戲、AR/VR)
→ 光柵化為主,再混合少量 RT(陰影、反射、AO)提升真實感。
你要高寫實的靜態/動畫畫面(離線渲染、影片、建築可視化)
→ 光線追蹤/路徑追蹤為主,必要時做降噪與離線算圖。
你要在瀏覽器跑
→ 目前多為 光柵化/compute 混合;RT 以實驗為主,或透過近似法。
把「最需要真實」的部分交給 RT,其餘用光柵化吞吐:
混合的精神:把重武器只用在最有視覺回報的地方。
平台目標:PC/主機/行動裝置?支援 RT 的比例?
內容特性:鏡面、玻璃、水很多嗎?室內(反彈多)還是戶外(陰影大片)?
視覺目標:寫實到什麼程度?噪點能接受嗎?
預算:美術與工程時間、降噪器與資源管線成本。
效能預算:
可維護性:混合方案往往最實際,但系統複雜度提升;要有良好 Debug/Profiler 流程。
想要的效果 | 光柵化做法(成本/限制) | RT 做法(成本/限制) |
---|---|---|
更真實的陰影 | PCSS / VSM / CSM,參數多、易出現閃爍或漏光 | 1 ray/px 就很棒,但要降噪;多光源成本上升 |
可靠的鏡面反射 | SSR + 反射探頭;螢幕外物體看不到 | RT 一次到位;粗糙反射需多樣本+降噪 |
室內間接光 | 光照貼圖烘焙、DDGI、SDF GI | 小樣本 GI + 累積;降噪與穩定性是關鍵 |
複雜透明 | 多 Pass 排序、近似 | RT 可自然處理,但樣本/成本增 |
Q:為什麼 RT 畫面有「沙沙的雜點」?
A:因為你只抽樣到少量光線(樣本不足),需要多幀累積與降噪(temporal + spatial)。
Q:RT 一定比較慢嗎?
A:在相同視覺目標下,多數時候 RT 成本更高;但如果你的需求就是「高真實反射/折射/陰影」,RT 反而更直接、更可控。
Q:手機可以做 RT 嗎?
A:支援有限且成本高。實務上仍以光柵化為主,配合暫時性與螢幕空間技術。
Q:我應該全 RT 嗎?
A:即時內容幾乎都走混合式;全 RT(Path Tracing)已有展示,但通常需要強力硬體與重建/降噪技術。
光柵化 = 又快又成熟的投影+填色;光線追蹤 = 自然寫實但計算大。
做即時互動:光柵化為主、RT 補關鍵效果;做離線高真實:RT/Path Tracing 為主。
專案裡最實用的策略是:把有限的 RT 預算,用在最有視覺回報的地方,其餘交給光柵化的百寶箱。