本文僅討論 Blinn-phong BRDF model 的高光specular部分,其BRDF 表達式爲:segmentfault
H 是半角向量:spa
普通的monte carlo 方法在對BRDF 進行採樣的時候是對出射光方向採樣(好比phong模型),可是這裏對光照結果產生影響的是半角向量,所以咱們對半角向量H採樣,而後再反推出出射光的方向。圖片
山寨一張GPU gem 的圖:ci
咱們用θ ø 表示在 以N軸爲Z軸的空間裏H 向量的方向(球座標), 這樣只要θ按照餘弦n次方的分佈採樣就能作到和BRDF一致實現重要性採樣了;具體:class
這樣採樣以後半角的分佈就是:pdf
β 就是半角和法向量的夾角。model
以後轉換爲x y z 座標:方法
而後就是採樣出來的H向量了,須要注意的是這裏咱們生產的分佈是H向量的,在實際計算輻射積分的時候是關於入射向量的,因此須要作一個分佈的轉換(參考PBRT章節13.5)im
這樣咱們能夠得出 最終採樣的pdf表達式爲:img
蒙特卡洛的估計量(BRDF / PDF) 能夠簡化成:
放一張path tracing 的結果: