微表面模型-PBR渲染管線的材質

原文鏈接:微表面模型-PBR渲染管線的材質 - Blog

PBR渲染管線之所以能夠比較真實地表現各種不同的材質,是因為它採用了更加複雜的材質模型。在PBR渲染管線出現之前,我們通常採用的材質模型由三部分組成:環境光(Ambient)、漫反射(Diffuse)以及鏡面反射(Specular)。我們採用Lambert模型來模擬漫反射散射,用Phong模型來模擬鏡面反射高光。但是這種模型難以模擬出表面不同的粗糙程度造成的不同反射效果,導致它模擬出來的材質在視覺上看起來更加接近於塑料的光滑表面。

PBR渲染管線中採用的是一種叫做微表面(Microfacet Model)的材質模型,它基於物理的觀察,認為物體表面由很多凹凸不平的微小鏡面組成。這些具有不同大小、方向的微表面在對入射光線進行反射時產生了不同的反射效果,從而使得人眼能觀察到不同的材質屬性。因此,微表面模型能夠更加真實地模擬各種不同的材質,如下圖所示【1】:

雖然PBR渲染管線是近幾年才被應用到遊戲渲染領域,但是微表面模型早在上世紀80年代就在計算機圖形學領域被提出。今天介紹的這篇技術論文是於1981年發表在ACM Computer Graphics的文章。這篇論文提出了一個對真實世界材質模擬的數學模型,它就是著名的Cook-Torrance模型。Cook-Torrance模型對計算機圖形學材質模型的研究發展具有重要的影響。直到今天,我們仍然可以看到許多遊戲引擎的PBR渲染管線中採用Cook-Torrance材質模型的簡化版以及它的變種。

在這篇論文中的Cook-Torrance模型出現之前,大部分計算機圖形學中模擬物體材質模型的設計思路都是基於幾何光學,如:模擬理想漫反射的Lambert模型、利用餘弦函數指數函數模擬高光的Phong、以及將grazing angle的高光考慮在內的Blinn等。這些模型能夠很好地模擬一部分真實世界的材質,但是仍然有些材質無法模擬。Cook-Torrance模型則不同,它基於的是一個物理現象,即物體表面是由許多微小的平面組成。這些平面的朝向各不相同,而對於光滑的物體,微小平面朝向分布比較統一,對於粗糙物體,微小平面的朝向分布更加散亂。這使得Cook-Torrance模型能夠更加通用,並且能夠模擬表面粗糙的材質。前人提出的模型在模擬鏡面反射以及高光的效果時更像是塑料,而Cook-Torrance不僅能模擬塑料,也能很好地模擬金屬等粗糙表面的高光現象。

接下來我們將首先介紹文章中的反射光照模型,即Cook-Torrance模型的通用表達式。然後,介紹高光項的表達式。因為基於微表面物理模型與傳統的解析模型最大的區別,就在於對鏡面反射高光項的處理不同。基於微表面模型的高光項,引入了更多的考慮因素,如:菲涅爾現象、微表面的朝向分布函數、以及陰影遮擋項,才使得其能夠成為更加通用材質模型。

一、反射模型

給定光源、物體表面以及觀察者,反射模型描述了光線從光源方向射向物體表面,然後從觀察者的方向被反射出去的情況。其中,包含了光的強度以及顏色信息。被反射的光的強度和顏色取決於光源射出的光強度和顏色,以及物體表面的反射能力。通常我們用BRDF(Bidirectional Reflectance Distribution Function)函數來描述物體表面對光的反射能力。接下來我們將介紹文章作者是如何定義這個函數的。

物體表面反射能力函數,即 BRDF 函數,可以定義為:從 L 方向射入的光線有多少從 V 方向被射出。假設入射光為無窮遠的方向光,並且光強用 Ii 表示,則從 L 方向入射到 P 點的光能可表示為:

其中,ω 為入射光方向角。若用 R 表示 BRDF 函數, Ir 表示反射光線的強度,則 Ir 可表示為:

其中,s + d = 1 分別表示高光和漫反射係數。如果再加上環境光影響,則上述公式可變化為:

上述公式即為文章中的光照計算表達式。

二、高光項及其中各項表達式

文章作者定義了一個光源方向和視線方向之間的一個向量 H 。如上圖所示,給定物體表面一點 P ,以及光源方向 L 和視線方向 V 。則其中間向量可以由如下公式表示:

其中,θ 為 L 和 V 之間夾角的一半。因此,

文章作者假設環境光為一個恆定值,漫反射為理想漫反射,於是 Ra 和 Rd 與視線方向無關。但是高光項 Rs 與視線方向有關。根據微表面模型的定義,物體表面由無數朝向不同微小平面組成,每一個微小平面可以看作一個鏡面,對入射光產生鏡面反射。因此,只有法線方向與 H 相同的微小平面才會對高光項產生貢獻。定義高光項的形式為:

其中,F 為菲涅爾項、G 為陰影遮擋項、D 為朝向分布項。接下來我們將一一介紹這三項的表達式。

首先,我們介紹陰影遮擋項。根據前人提出的模型,G 函數可以用如下公式表示:

朝向分布函數 D 描述了微小平面中朝向 H 方向的平面的比例。在前人提出的模型中,比較著名的是Blinn和Beckmann提出的模型。Blinn模型的表達式為:

其中,C 為一個常量。Beckmann模型的表達式為:

在這兩個模型中,α 表示 H 和 N 之間的夾角,m 則決定了高光的分布範圍。m 取值較小時,微小平面的朝向比較統一,因此高光的範圍比較窄。反之,則高光的反射範圍比較廣,如下圖所示:

左邊兩幅圖從上到下是當 m = 0.2 和 m = 0.6 時Beckmann模型的反射分布,右邊兩幅圖從上到下是當 m = 0.2 和 m = 0.6 時高斯模型的反射分布。從上圖可見,不同的 m 取值代表了不同的表面粗糙度。而當物體表面具有多種不同粗糙度時,分布函數 D 可以用不同取值的 m 的加權平均:

根據前人提出的菲涅爾公式,菲涅爾項 F 可以表示成為:

其中,c = cosθ = V·H,g2 =n2 +c2-1。當θ = 0 時,c = 1,g = n。則有:

於是,可求得:

至此,我們介紹完了Cook-Torrance模型中高光項的所有內容。接下來我們將對文章中的渲染結果進行展示。

三、更多結果展示

文章作者用不同的參數渲染了不同材質的物體。如下圖所示,不同的模型對應了不同取值的 s ,d 和 m。

渲染出來的結果如下圖所示:

下圖是包含多種材質的物體渲染結果:

如上圖所示,兩幅圖都是用Cook-Torrance模型渲染的結果,左邊是一個塑料材質的黃色瓶子,右邊是一個黃色的銅質瓶子。從上圖可以看到,Cook-Torrance模型可以很好地模擬物體表面不同程度粗糙度的光照情況,因此它不僅能渲染出塑料材質表面輪廓清晰的高光,也能渲染出金屬表面模糊的高光效果。而這一特性卻是傳統的模型無法達到的效果。

四、總結

這篇論文基於微表面模型,提出了一個新的材質模型。相比於前人提出的模型,該模型考慮了對菲涅爾現象、陰影遮擋以及微表面朝向分布等因素對高光項的影響。從而使得該模型能夠很好地模擬粗糙表面的高光現象。對於不同粗糙度的參數取值,該模型能夠更加通用地模擬廣泛的材質。

五、論文信息

關於論文作者:

Robert L. Cook,著名計算機圖形學學者,畢業於康奈爾大學,是Pixar動畫電影公司著名渲染引擎RenderMan的創立者之一,目前已退休。

Kenneth E. Torrance,著名計算機圖形學學者,曾經在康奈爾大學機械與航天工程學院工作,目前已退休。

下載地址:

inst.cs.berkeley.edu/~c

參考文獻:

【1】基於物理著色(三)- Disney和UE4的實現 - 知乎專欄

這是侑虎科技的原創文章,歡迎轉載分享,未經許可請勿轉載。

六、關於惟學無際

UWA在2017年推出的全新研究型專欄,我們將為大家推薦極具實際價值的學術論文,並梳理其中的研究背景、實現原理和執行方法等。內容專註於遊戲、VR和AR相關的計算機圖形學領域。正所謂問渠哪得清如許,為有源頭活水來 ,希望大家在研發的過程中不僅知其然,還能知其所以然。


推薦閱讀:

Unity線性空間下移動設備上烘焙變暗問題處理
UWA GOT v1.1 | 支持本地管理深度測評、全新的UWA API、兼容Unity 2017.3
Unity載入模塊深度解析(網格篇)
ET框架:windows/Linux 雲伺服器部署

TAG:Unity游戏引擎 | 性能优化 | 游戏开发 |