日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

GGX重要性采样

發布時間:2023/12/13 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 GGX重要性采样 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在之前的文章里面,我們介紹了Cook-Torrance BRDF,這是一種常見的用于表現PBR的光照模型。今天我們想要解決的問題是,在該BRDF下,給定物體材質的粗糙度(roughness),該如何生成符合該粗糙度的采樣方向呢(這對于路徑追蹤采樣生成入射光、IBL算法中采樣計算radiance都很重要)?

法向分布函數(NDF)

對GGX的采樣主要是針對它的法向分布函數NDF來進行的。在之前的文章中,我們曾經簡單地介紹過法向分布函數的概念,它是一個用來描述微面元模型中各個微面的法向分布密度的函數。該函數實際的意義是當前點的微表面(microfacet)的面積除以宏表面(macrofacet)的面積,然后再除以立體角,所以NDF的單位是立體角分之一。
但是如果直接對NDF針對立體角dw積分的話,得到的結果其實并不是1,也就是說NDF實際上并不是法線的概率密度函數。
真正的歸一化公式如下:

(LARGE int D(m)cos( heta_m)domega=1)

其中D是法向分布函數,m是某個微面元的法向,( heta_m)則是微面元的法向和宏觀表面法向的夾角,(omega)是該微面元所屬的立體角。這個公式其實就是將微面元的面積映射到了宏表面上,如下圖所示:

也就是說,如果上面的積分中沒有這個(cos heta),那么得到的其實是微表面面積之和和宏表面之比。
更詳細的理論推導可以參考這篇文章:How Is The NDF Really Defined?
通過上面的公式可知,(D(m)cos( heta_m))才是真正關于微表面法線的概率密度函數。

關于GGX的重要性采樣

知道了概率密度函數p,我們就可以根據它進行采樣。在這里我們以GGX的NDF為例。
GGX的NDF形式如下:
(large{NDF-GGX(n,h,alpha)=frac{{alpha}^2}{pi {( {cos heta}^2 ({alpha}^2 - 1) + 1)}^2}})
將它轉換為球坐標系的概率密度函數為:

(large{p( heta,phi)=frac{{alpha}^2 cos heta sin heta}{pi {( {cos heta}^2 ({alpha}^2 - 1) + 1)}^2}})

求( heta)和(phi)的邊緣概率密度函數,得:

進一步求得( heta)和(phi)的CDF:
(LARGE P_h(phi)=frac{phi}{2pi})

設兩個[0,1]之間的隨機數(xi)和(epsilon)分別對應(P_h(phi))和(P_h( heta)),可以解得(其實用得就是逆方法):
(LARGE phi = 2pixi)
(LARGE heta = arccossqrt{frac{1-epsilon}{epsilon(alpha^2 - 1) + 1}})

可以看到UE4中的GGX采樣也是用該思路來計算的:

總結

以上是生活随笔為你收集整理的GGX重要性采样的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。