學習一下光線追蹤的概念與基本原理.
並計劃實現一個簡單的光線追蹤Demo.
什麼是光線追蹤
- 光線追蹤是三維計算機圖形學中的一種特殊渲染算法. 是一種基於模擬真實光線彈射路徑渲染成像的技術.
- 基本工作原理:從取景器發出一定量的射線,投射到三維物體上,在三維空間中進行反彈,折射,並根據這個物體本身的一些材質屬性,再綜合光線路徑等信息,計算出這個物體最終在畫面中每一個像素點的顏色信息。這種模擬真實光線彈射的算法是目前所出現的能夠得到較爲真實的結果的一種計算方式。
- 當然,這種算法需要大量的運算,因此早期遊戲和硬件無法使用這種算法進行實時渲染。
光線追蹤的原理
- 光線追蹤希望能模擬光線在真實環境下的折射,反射,漫反射,間接反射等物理現象。如果我們能夠模擬整個場景光線的傳播,就能得到非常真實的圖像
- 但如果直接從 光源開始發射的光線 經過傳播後並不一定會進入攝像機,造成了大量計算浪費。
- 使用 逆向追蹤——即從攝像機開始發射光線進行追蹤 ,將有效減少無效計算,即使如此,計算量依然是巨大的,如果每一個像素點發射一條光線進行追蹤,並且追蹤10次折射或反射的話.生成一張1080P的圖,相交的計算量將是 1920 * 1080 * 10 = 20 736 000,約兩千萬次光線追蹤運算。
單獨看一個像素上的追蹤過程的話:
- 從視線方向發射一條射線;
- 取得射線與場景最近的交點;
- 取得交點的材質顏色;
- 如果材質包含反射或折射,則改變光線的方向;
- 尋找下一個交點.並重復(2). 直到在場景內找不到交點.或者達到達到最大跟蹤次數.
對於(2). 因爲需要遍歷場景. 開銷隨場景複雜度上升而上升.
對於一些簡單的示例場景中, 可以簡化爲 射線和球. 或者射線與平面的相交. 求最近的交點.
光線追蹤的入門
- 感覺上面這篇寫得很好.