本部分繼續光線追蹤部分,先介紹了蒙特卡洛積分的方法,之後對路徑追蹤PT的發展和推導過程進行了全面的闡述。
學習視訊
GAMES101-現代計算機圖形學入門-闫令琪_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1X7411F744?p=16
本節需要準備知識:上一節的渲染方程、機率和微積分的基本知識。下面的蒙特卡洛積分部分也算是提前的知識儲備。
蒙特卡洛積分
為什麼:
我們想要解決一個定積分,但它可能很難通過解析式解決。
怎麼樣使用蒙特卡洛積分:
每次采樣都采到那些機率高的點,在求總的估計量的時候就要降低這些點的占比,是以是除以機率
例子
注意
路徑追蹤
Whitted-Style光線追蹤
可見:
計算機圖形學入門(十三)-光線追蹤(基本原理) - 知乎 (zhihu.com)
Whitted-Style光線追蹤問題1:對于光滑材質并不能使用鏡面反射那種計算方式
Whitted-Style光線追蹤是不正确的
但是渲染方程是正确的
見上一節
計算機圖形學入門(十六)-光線追蹤(渲染方程) - 知乎 (zhihu.com)
一個簡單的蒙特卡洛積分應用
繼續寫
渲染算法
進一步加入間接光照
嚴重的問題:指數爆炸
修改一下之前的算法
N!=1叫做分布式光線追蹤,現在很少有人提了,還是指數爆炸的問題。
真實世界中光線确實不會停下來,但在計算機中可不能這麼模拟,但限制彈射次數又會有能量損失(繼續彈射的那部分光不去計算了),聰明的人們想出了辦法:
俄羅斯輪盤賭
這樣最後的光線追蹤結果基本上和無限反射結果相同
但仍存在問題
需要提高效率
回想蒙特卡洛積分
渲染方程改寫成對面積dA的積分
現在可以回到原來的算法了
路徑追蹤的代碼基本就這些了
遺留問題,點光源怎麼辦?建議把點光源變成個小面積光源。
一些其他的點
右邊就是本節講述的方法實作
還有一些問題并沒有談到