蒙特卡洛積分
為什么用蒙特卡洛積分,用來做什么?跟黎曼積分區別,黎曼積分是平均分成n等分,取每個小塊中間的值取計算每個小塊面積,再將n份集合加起來。蒙特卡洛積分就是隨機取樣,假設隨機取樣點xi,對應的f(x)就是長方形的高,寬就是b-a。那長方形面積就是f(x)*(b-a)。那重復多次取平均,就可以估算這塊區域的面積。
假設ab之間均勻采樣,那p(x)的值都是1/(b-a)
n越大,結果越準。
Whitted-Style Ray Tracing 是完全反射的,不能解決Glossy reflection
漫反射會均勻把光反射到不同方向上去。如果直接光照,燈往下打,那天花板肯定是黑的。光會反射很多次。
Whitted-Style Ray Tracing是錯的,但是渲染公式是對的,需要要解決2個問題
換句話說它一個積分,我們要計算左半球方向的積分,那就是在不同方向采樣,隨機選一個方向,那就是隨機變量。其實就是均勻的對半球采樣。
全局光照
n等于多少,才不會爆炸? n=1,n的多少次方還是1.
簡化 n=1,用蒙特卡洛積分就叫路徑追蹤。n要是不等于1,也有說法,叫分布式光線追蹤。
穿過一個像素,可以有很多不同的光線,對這些路徑求平均就是他們的radiance,是不是有足夠多的path就可以保證準確了。這叫path,就是一個方向打入只會向一個方向打出,隨機選一個方向,不再一下產生一束。最終會形成,一條從視點到光源的路徑。
這樣就可以 把Ray Generation和著色聯系在一起
光追算法永遠不會停的問題
真實的世界光線彈射次數也不會停
限制次數會損失能量。真實的就是無數次,但是計算機里沒有辦法模擬無數次,死循環了。怎么辦?引入俄羅斯輪盤賭
通過概率考慮停止光線彈射次數。這里先確定一定概率
這里是不是彈射光線如果有P_RR的概率生成下來,那就能算出來,會彈射多少次停下來,就是求N次數。
打的光線取樣越少,noisy越高。能表現,但不高效。
在不同情況下,能不能打到光線,是看運氣的,光源越小越難打到。不高效!
在像素上采樣改成換成在光源上采樣。渲染方程需要寫成光源上的渲染方程。
光的計算就拆成光源計算光源直接光采樣計算,和間接光采樣計算帶俄羅斯輪盤賭概率算法計算。
以前說光追就是Whitted-style ray tracing 現在是所有光線傳播方法的大集合。