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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

先放出PBR知識體系的架構(gòu)圖:

先放出PBR知識體系的架構(gòu)圖:

這張架構(gòu)圖是這個系列文章的內(nèi)容框架,而且會隨著內(nèi)容的深入,不斷更新。目前是1.0版。

?

系列文章前言

基于物理的渲染(Physically Based Rendering , PBR)技術(shù),自迪士尼在SIGGRAPH 2012上提出了著名的“迪士尼原則的BRDF(Disney Principled BRDF)”之后,由于其高度的易用性以及方便的工作流,已經(jīng)被電影和游戲業(yè)界廣泛使用。

個人了解和研究基于物理的渲染,也已經(jīng)有一段時間了。

期間看了大量的資料,基本刷完了《SIGGRAPH Course: Physically Based Shading in Theory and Practice》系列2010年到2017年的幾十篇talk和note(可惜這個course 2018年沒有開設(shè)),這邊是整理好的鏈接,包含了PPT和note的下載:

  • 【SIGGRAPH 2010 Course】Physically-Based Shading Models in Film and Game Production?http://renderwonk.com/publications/s2010-shading-course/
  • 【SIGGRAPH 2012 Course】Practical Physically Based Shading in Film and Game Production?https://blog.selfshadow.com/publications/s2012-shading-course/
  • 【SIGGRAPH 2013 Course】Physically Based Shading in Theory and Practice?https://blog.selfshadow.com/publications/s2013-shading-course/
  • 【SIGGRAPH 2014 Course】Physically Based Shading in Theory and Practice?https://blog.selfshadow.com/publications/s2014-shading-course/
  • 【SIGGRAPH 2015 Course】Physically Based Shading in Theory and Practice?https://blog.selfshadow.com/publications/s2015-shading-course/
  • 【SIGGRAPH 2016 Course】Physically Based Shading in Theory and Practice?https://blog.selfshadow.com/publications/s2016-shading-course/
  • 【SIGGRAPH 2017 Course】Physically Based Shading in Theory and Practice?https://blog.selfshadow.com/publications/s2017-shading-course/

?

也看了一些相關(guān)的著作。目前了解到的PBR相關(guān)的著作,主要有三本:

  • 《Physically Based Rendering: From Theory to Implementation, Third Edition》這本書主要專注離線渲染,實時渲染只能用到里面很少的一部分。PBRT現(xiàn)已開放Web版全文閱讀:http://www.pbr-book.org/3ed-2018/contents.html,非常良心
  • 《Real-Time Rendering 4th》中PBR的相關(guān)章節(jié),個人認(rèn)為是非常不錯的資料。
  • 《Physically Based Shader Development for Unity》,主要是PBR在Unity引擎中的使用,而且是以Surface Shader的方式,準(zhǔn)入門級,比較淺。

?

期間也記過一些筆記,已經(jīng)有不少的篇幅,但內(nèi)容始終比較零散。所以有了萌生將這些筆記整理成更系統(tǒng)的系列文章的念頭。

通過將零散的筆記進(jìn)行總結(jié),集結(jié)成文章,并發(fā)布出來,既對想更系統(tǒng)而深入地了解PBR和實時渲染相關(guān)技術(shù)的朋友們所有幫助,對我自己而言,在總結(jié)的過程中,也應(yīng)該會收獲頗豐。正如已經(jīng)完結(jié)的【《Real-Time Rendering 3rd》 提煉總結(jié)】系列,以及還未完結(jié)的【GPU精粹】系列一樣(GPU精粹系列目前暫停,稍后會繼續(xù)填完)。

而目前,國內(nèi)似乎確實缺少一個較為系統(tǒng)、全面、深入介紹基于物理的實時渲染的系列文章。

另外,類似之前【《Real-Time Rendering 3rd》 提煉總結(jié)】的方式,在這個系列完結(jié)后,會進(jìn)行整理,集結(jié)成冊,成為一本電子書,暫定書名為《基于物理的渲染(PBR)白皮書》。所以此系列目前便直接命名為了【基于物理的渲染(PBR)白皮書】,便于整體認(rèn)知的延續(xù)。

總之,希望這個新的系列,能對大家有所幫助。

?

PBR知識體系概覽

這篇文章接下來的部分,是這個系列文章PBR知識體系的精華濃縮版。涉及八個部分的內(nèi)容:

  • 一、核心PBR理論
  • 二、渲染方程與BxDF
  • 三、迪士尼原則的BxDF(Disney Principled BxDF)
  • 四、漫反射BRDF模型(Diffuse BRDF)
  • 五、鏡面反射BRDF模型(Specular BRDF)
  • 六、基于物理的環(huán)境光照(Physically Based Environment Lighting )
  • 七、離線渲染相關(guān)(Offline Rendering Related)
  • 八、進(jìn)階渲染主題(Advanced Rendering Topics)

通過接下來的概覽,希望能在后續(xù)的具體章節(jié)展開前,讓大家對PBR的整體知識體系,有一個全面的認(rèn)知,所謂的大局觀的建立。

?

一、PBR核心理論與渲染原理

PBR核心知識體系的第一部分自然是PBR的核心理論以及相關(guān)的渲染原理。比較老生常談,但作為基礎(chǔ)理論,是入門級知識,還是需要仔細(xì)交代。

基于物理的渲染(Physically Based Rendering,PBR)是指使用基于物理原理和微平面理論建模的著色/光照模型,以及使用從現(xiàn)實中測量的表面參數(shù)來準(zhǔn)確表示真實世界材質(zhì)的渲染理念。

以下是對PBR基礎(chǔ)理念的概括:

  • 微平面理論(Microfacet Theory)。微平面理論是將物體表面建模成做無數(shù)微觀尺度上有隨機(jī)朝向的理想鏡面反射的小平面(microfacet)的理論。在實際的PBR 工作流中,這種物體表面的不規(guī)則性用粗糙度貼圖或者高光度貼圖來表示。
  • 能量守恒(Energy Conservation)。出射光線的能量永遠(yuǎn)不能超過入射光線的能量。隨著粗糙度的上升鏡面反射區(qū)域的面積會增加,作為平衡,鏡面反射區(qū)域的平均亮度則會下降。
  • 菲涅爾反射(Fresnel Reflectance)。光線以不同角度入射會有不同的反射率。相同的入射角度,不同的物質(zhì)也會有不同的反射率。萬物皆有菲涅爾反射。F0是即 0 度角入射的菲涅爾反射值。大多數(shù)非金屬的F0范圍是0.02~0.04,大多數(shù)金屬的F0范圍是0.7~1.0。
  • 線性空間(Linear Space)。光照計算必須在線性空間完成,shader 中輸入的gamma空間的貼圖比如漫反射貼圖需要被轉(zhuǎn)成線性空間,在具體操作時需要根據(jù)不同引擎和渲染器的不同做不同的操作。而描述物體表面屬性的貼圖如粗糙度,高光貼圖,金屬貼圖等必須保證是線性空間。
  • 色調(diào)映射(Tone Mapping)。也稱色調(diào)復(fù)制(tone reproduction),是將寬范圍的照明級別擬合到屏幕有限色域內(nèi)的過程。因為基于HDR渲染出來的亮度值會超過顯示器能夠顯示最大亮度,所以需要使用色調(diào)映射,將光照結(jié)果從HDR轉(zhuǎn)換為顯示器能夠正常顯示的LDR。
  • 物質(zhì)的光學(xué)特性(Substance Optical Properties)。現(xiàn)實世界中有不同類型的物質(zhì)可分為三大類:絕緣體(Insulators),半導(dǎo)體(semi-conductors)和導(dǎo)體(conductors)。在渲染和游戲領(lǐng)域,我們一般只對其中的兩個感興趣:導(dǎo)體(金屬)和絕緣體(電解質(zhì),非金屬)。其中非金屬具有單色/灰色鏡面反射顏色。而金屬具有彩色的鏡面反射顏色。即非金屬的F0是一個float。而金屬的F0是一個float3,如下圖。

圖 金屬和非金屬材質(zhì)的F0范圍

?

除了PBR的基礎(chǔ)理論,光與非光學(xué)平坦表面的交互對理解微平面理論(Microfacet Theory)至關(guān)重要。下面進(jìn)行一些說明。

?

1.1 光與非光學(xué)平坦表面的交互原理

光在與非光學(xué)平坦表面(Non-Optically-Flat Surfaces)的交互時,非光學(xué)平坦表面表現(xiàn)得像一個微小的光學(xué)平面表面的大集合。表面上的每個點都會以略微不同的方向?qū)θ肷涔夥瓷?#xff0c;而最終的表面外觀是許多具有不同表面取向的點的聚合結(jié)果。

?

圖 來自非光學(xué)平坦表面的可見光反射是來自具有不同方向的許多表面點的反射的總體結(jié)果

?

在微觀尺度上,表面越粗糙,反射越模糊,因為表面取向與整個宏觀表面取向的偏離更強(qiáng)。

圖 圖片頂部所示的表面,表面相對光滑; 表面取向僅略有變化,導(dǎo)致反射光方向的微小變化,從而產(chǎn)生更清晰的反射。 圖片底部所示的的表面較粗糙; 表面上的不同點具有廣泛變化的方向取向,導(dǎo)致反射光方向的高度變化,并因此導(dǎo)致模糊的反射。 注意,兩個表面在肉眼可見尺度下看起來都是光滑的,粗糙度差異僅在微觀尺度上。

出于著色的目的,我們通常會去用統(tǒng)計方法處理這種微觀幾何現(xiàn)象,并將表面視為在每個點處在多個方向上反射(和折射)光。

?

圖 從宏觀上看,非光學(xué)平面可以被視為在多個方向上反射(和折射)光

?

從表面反射出的光的行為很好理解,那么,從表面折射的光會發(fā)生什么變化? 這取決于對象本身的特性:

  • 對于金屬,折射光會立刻被吸收 - 能量被自由電子立即吸收。
  • 對于非金屬(也稱為電介質(zhì)或絕緣體),一旦光在其內(nèi)部折射,就表現(xiàn)為常規(guī)的參與介質(zhì),表現(xiàn)出吸收和散射兩種行為。

圖 在金屬中,所有折射的光能立即被自由電子吸收

?

圖 在非金屬中,折射的光會進(jìn)行散射,直到從表面重新射出,而這通常會在經(jīng)過部分吸收之后

?

1.2 漫反射和次表面散射本質(zhì)相同

另外,漫反射和次表面散射其實是相同物理現(xiàn)象,本質(zhì)都是折射光的次表面散射的結(jié)果。唯一的區(qū)別是相對于觀察尺度的散射距離。散射距離相較于像素來說微不足道,次表面散射便可以近似為漫反射。也就是說,光的折射現(xiàn)象,建模為漫反射還是次表面散射,取決于觀察的尺度,如下圖。

?

圖 在左上角,像素(帶有紅色邊框的綠色圓形)大于光線離開表面之前所經(jīng)過的距離。 在這種情況下,可以假設(shè)出射光從入口點(右上)射出,可以當(dāng)做漫反射,用局部著色模型處理。 在底部,像素小于散射距離; 如果需要更真實的著色效果,則不能忽略這些距離的存在,需當(dāng)做次表面散射現(xiàn)象進(jìn)行處理。

1.3 PBR的范疇(Scope of PBR)

寒霜(Frostbite)引擎在SIGGRAPH 2014的分享《Moving Frostbite to PBR》中提出,基于物理的渲染的范疇,由三部分組成:

  • 基于物理的材質(zhì)(Material)
  • 基于物理的光照(Lighting)
  • 基于物理適配的攝像機(jī)(Camera)

?

完整的這三者,才是真正完整的基于物理的渲染系統(tǒng)。而很多同學(xué)一提到PBR,就說PBR就是鏡面反射采用微平面Cook-Torrance模型,其實是不太嚴(yán)謹(jǐn)?shù)摹?/p>

?

?

二、渲染方程與BxDF

?

PBR核心知識體系的第二部分是渲染方程與BxDF。渲染方程作為渲染領(lǐng)域中的重要理論,將BxDF代入渲染方程是求解渲染問題的一般方法。

?

2.1 渲染方程與反射方程

渲染方程(The Rendering Equation)作為渲染領(lǐng)域中的重要理論,其描述了光能在場景中的流動,是渲染中不可感知方面的最抽象的正式表示。根據(jù)光學(xué)的物理學(xué)原理,渲染方程在理論上給出了一個完美的結(jié)果,而各種各樣的渲染技術(shù),只是這個理想結(jié)果的一個近似。

渲染方程的物理基礎(chǔ)是能量守恒定律。在一個特定的位置和方向,出射光 Lo 是自發(fā)光 Le 與反射光線之和,反射光線本身是各個方向的入射光 Li 之和乘以表面反射率及入射角。

這個方程經(jīng)過交叉點將出射光線與入射光線聯(lián)系在一起,它代表了場景中全部的'光線傳輸。所有更加完善的算法都可以看作是這個方程的特殊形式的解。

某一點p的渲染方程,可以表示為:

其中:

  • ??是p點的出射光亮度。
  • ??是p點發(fā)出的光亮度。
  • ??是p點入射方向到出射方向光的反射比例,即BxDF,一般為BRDF。
  • ??是p點入射光亮度。
  • ??是入射角帶來的入射光衰減
  • ??是入射方向半球的積分(可以理解為無窮小的累加和)。

?

而在實時渲染中,我們常用的反射方程(The Reflectance Equation),則是渲染方程的簡化的版本,或者說是一個特例:

同樣,其中:

  • ??是p點的出射光亮度。
  • ??是p點入射方向到出射方向光的反射比例,即BxDF,一般為BRDF。
  • ??是p點入射光亮度。
  • ??是入射角帶來的入射光衰減
  • ??是入射方向半球的積分(可以理解為無窮小的累加和)。

?

2.2 BxDF

BxDF一般而言是對BRDF、BTDF、BSDF、BSSRDF等幾種雙向分布函數(shù)的一個統(tǒng)一的表示。

其中,BSDF可以看做BRDF和BTDF更一般的形式,而且BSDF = BRDF + BTDF。

而BSSRDF和BRDF的不同之處在于,BSSRDF可以指定不同的光線入射位置和出射位置。

在上述這些BxDF中,BRDF最為簡單,也最為常用。因為游戲和電影中的大多數(shù)物體都是不透明的,用BRDF就完全足夠。而BSDF、BTDF、BSSRDF往往更多用于半透明材質(zhì)和次表面散射材質(zhì)。

圖 BSDF:BRDF + BTDF

?

我們時常討論的PBR中的BxDF,一般都為BRDF,對于進(jìn)階的一些材質(zhì)的渲染,才會討論BSDF等其他三種BxDF。

另外,BxDF即上文所示渲染方程以及反射方程中的???項。

?

2.3 BRDF的分類

?

圖 BRDF的分類,來自[Montes R, Ure?a C. An overview of BRDF models[J]. 2012]

?

三、迪士尼原則的BxDF(Disney Principled BxDF)

?

PBR核心知識體系的第三部分是迪士尼原則的BxDF。迪士尼動畫工作室在SIGGRAPH 2012上著名的talk《Physically-based shading at Disney》中提出了迪士尼原則的BRDF(Disney Principled BRDF),奠定了后續(xù)游戲行業(yè)和電影行業(yè)PBR的方向和標(biāo)準(zhǔn)。了解Disney Principled BxDF,是深入理解PBR的重要一環(huán)。

?

基于物理的渲染,其實早在20世紀(jì)就已經(jīng)在圖形學(xué)業(yè)界有了一些討論,2010年在SIGGRAPH上就已經(jīng)有公開討論的Course 《SIGGRAPH 2010 Course: Physically-Based Shading Models in Film and Game Production》,而直到2012~2013年,才正式進(jìn)入大眾的視野,漸漸被電影和游戲業(yè)界廣泛使用。

迪士尼動畫工作室則是這次PBR革命的重要推動者。迪士尼的Brent Burley于SIGGRAPH 2012上進(jìn)行了著名的talk《Physically-based shading at Disney》,提出了迪士尼原則的BRDF(Disney Principled BRDF), 由于其高度的通用性,將材質(zhì)復(fù)雜的物理屬性,用非常直觀的少量變量表達(dá)了出來(如金屬度metallic和粗糙度roughness),在電影業(yè)界和游戲業(yè)界引起了不小的轟動。從此,基于物理的渲染正式進(jìn)入大眾的視野。

?

圖 SIGGRAPH 2012《Physically-based shading at Disney》

?

在2012年受到Disney的啟發(fā)后,以下是主流游戲引擎從傳統(tǒng)渲染轉(zhuǎn)移到基于物理的渲染時間節(jié)點:

  • [SIGGRAPH 2013] UE4 :[Real shading in unreal engine 4]
  • [SIGGRAPH 2014] Frostbite(寒霜):[Moving Frostbite to PBR]
  • [GDC 2014] Unity :[Physically Based Shading in Unity]

3.1 迪士尼原則的BRDF(Disney Principled BRDF)

3.1.1 Disney Principled BRDF核心理念

在2012年迪士尼原則的BRDF被提出之前,基于物理的渲染都需要大量復(fù)雜而不直觀的參數(shù),此時PBR的優(yōu)勢,并沒有那么明顯。

在2012年迪士尼提出,他們的著色模型是藝術(shù)導(dǎo)向(Art Directable)的,而不一定要是完全物理正確(physically correct)的,并且對微平面BRDF的各項都進(jìn)行了嚴(yán)謹(jǐn)?shù)恼{(diào)查,并提出了清晰明確而簡單的解決方案。

迪士尼的理念是開發(fā)一種“原則性”的易用模型,而不是嚴(yán)格的物理模型。正因為這種藝術(shù)導(dǎo)向的易用性,能讓美術(shù)同學(xué)用非常直觀的少量參數(shù),以及非常標(biāo)準(zhǔn)化的工作流,就能快速實現(xiàn)涉及大量不同材質(zhì)的真實感的渲染工作。而這對于傳統(tǒng)的著色模型來說,是不可能完成的任務(wù)。

迪士尼原則的BRDF(Disney Principled BRDF)核心理念如下:

  • 應(yīng)使用直觀的參數(shù),而不是物理類的晦澀參數(shù)。
  • 參數(shù)應(yīng)盡可能少。
  • 參數(shù)在其合理范圍內(nèi)應(yīng)該為0到1。
  • 允許參數(shù)在有意義時超出正常的合理范圍。
  • 所有參數(shù)組合應(yīng)盡可能健壯和合理。
  • 以上五條原則,很好地保證了迪士尼原則的BRDF的易用性。

    ?

    3.1.2 Disney Principled BRDF參數(shù)

    ?

    以上述理念為基礎(chǔ),迪士尼動畫工作室對每個參數(shù)的添加進(jìn)行了把關(guān),最終得到了一個顏色參數(shù)(baseColor)和下面描述的十個標(biāo)量參數(shù):

    • baseColor(基礎(chǔ)色):表面顏色,通常由紋理貼圖提供。
    • subsurface(次表面):使用次表面近似控制漫反射形狀。
    • metallic(金屬度):金屬(0 =電介質(zhì),1=金屬)。這是兩種不同模型之間的線性混合。金屬模型沒有漫反射成分,并且還具有等于基礎(chǔ)色的著色入射鏡面反射。
    • specular(鏡面反射強(qiáng)度):入射鏡面反射量。用于取代折射率。
    • specularTint(鏡面反射顏色):對美術(shù)控制的讓步,用于對基礎(chǔ)色(base color)的入射鏡面反射進(jìn)行顏色控制。掠射鏡面反射仍然是非彩色的。
    • roughness(粗糙度):表面粗糙度,控制漫反射和鏡面反射。
    • anisotropic(各向異性強(qiáng)度):各向異性程度。用于控制鏡面反射高光的縱橫比。(0 =各向同性,1 =最大各向異性)
    • sheen(光澤度):一種額外的掠射分量(grazing component),主要用于布料。
    • sheenTint(光澤顏色):對sheen(光澤度)的顏色控制。
    • clearcoat(清漆強(qiáng)度):有特殊用途的第二個鏡面波瓣(specular lobe)。
    • clearcoatGloss(清漆光澤度):控制透明涂層光澤度,0 =“緞面(satin)”外觀,1 =“光澤(gloss)”外觀。

    每個參數(shù)的效果的渲染示例如下圖所示。

    圖 Disney Principled BRDF。 每行的參數(shù)從0到1變化,其他參數(shù)保持不變

    ?

    3.2 迪士尼原則的BSDF(Disney Principled BSDF)

    ?

    隨后的2015年,迪士尼動畫工作室在Disney Principled BRDF的基礎(chǔ)上進(jìn)行了修訂,提出了Disney Principled BSDF [Extending the Disney BRDF to a BSDF with Integrated Subsurface Scattering, 2015]。

    以下是開源三維動畫軟件Blender實現(xiàn)的Disney Principled BSDF的圖示:

    圖 Disney Principled BSDF

    ?

    ?

    四、漫反射BRDF模型(Diffuse BRDF)

    ?

    為了求解渲染方程,需要分別求解Diffuse BRDF和Specular BRDF。所以PBR核心知識體系的第四部分是Diffuse BRDF。

    ?

    Diffuse BRDF可以分為傳統(tǒng)型和基于物理型兩大類。其中,傳統(tǒng)型主要是眾所周知的Lambert。

    而基于物理型,從1994年的Oren Nayar開始,這里一直統(tǒng)計到今年(2018年)。

    其中較新的有GDC 2017上提出的適用于GGX+Smith的基于物理的漫反射模型(PBR diffuse for GGX+Smith),也包含了最近在SIGGRAPH2018上提出的,來自《使命召喚:二戰(zhàn)》的多散射漫反射BRDF(MultiScattrering Diffuse BRDF):

    • Oren Nayar[1994]
    • Simplified Oren-Nayar [2012]
    • Disney Diffuse[2012]
    • Renormalized Disney Diffuse[2014]
    • Gotanda Diffuse [2014]
    • PBR diffuse for GGX+Smith [2017]
    • MultiScattrering Diffuse BRDF [2018]

    ?

    ?

    五、鏡面反射BRDF模型(Specular BRDF)

    ?

    PBR核心知識體系的第五部分是Specular BRDF。這也是基于物理的渲染領(lǐng)域中最活躍,最主要的部分。

    上圖加粗部分為目前業(yè)界較為主流的模型。

    游戲業(yè)界目前最主流的基于物理的鏡面反射BRDF模型是基于微平面理論(microfacet theory)的Microfacet Cook-Torrance BRDF。

    而微平面理論(microfacet theory)源自將微觀幾何(microgeometry)建模為微平面(microfacets)的集合的思想,一般用于描述來自非光學(xué)平坦(non-optically flat)表面的表面反射。

    微平面理論的基本假設(shè)是微觀幾何(microgeometry)的存在,微觀幾何的尺度小于觀察尺度(例如著色分辨率),但大于可見光波長的尺度(因此應(yīng)用幾何光學(xué)和如衍射一樣的波效應(yīng)等可以忽略)。且微平面理論在2013年和以前時僅用于推導(dǎo)單反射(single-bounce)表面反射的表達(dá)式; 而隨著領(lǐng)域的深入,最近幾年也出現(xiàn)了使用microfacet理論對多次反彈表面反射的一些探討。

    由于假設(shè)微觀幾何尺度明顯大于可見光波長,因此可以將每個表面點視為光學(xué)平坦的。 如上文所述,光學(xué)平坦表面將光線分成兩個方向:反射和折射。

    每個表面點將來自給定進(jìn)入方向的光反射到單個出射方向,該方向取決于微觀幾何法線(microgeometry normal)m的方向。 在計算BRDF項時,指定光方向l和視圖方向v。 這意味著所有表面點,只有那些恰好正確朝向可以將l反射到v的那些小平面可能有助于BRDF值(其他方向有正有負(fù),積分之后,相互抵消)。

    在下圖中,我們可以看到這些“正確朝向”的表面點的表面法線m正好位于lv之間的中間位置。lv之間的矢量稱為半矢量(half-vector)或半角矢量(half-angle vector); 我們將其表示為h

    圖 僅m = h的表面點的朝向才會將光線l反射到視線v的方向,其他表面點對BRDF沒有貢獻(xiàn)。

    并非所有m = h的表面點都會積極地對反射做出貢獻(xiàn);一些被l方向(陰影shadowing),v方向(掩蔽masking)或兩者的其他表面區(qū)域阻擋。Microfacet理論假設(shè)所有被遮蔽的光(shadowed light)都從鏡面反射項中消失;實際上,由于多次表面反射,其中一些最終將是可見的,但這在目前常見的微平面理論中一般并未去考慮,各種類型的光表面相互作用如下圖所示。

    ?

    圖 在左側(cè),我們看到一些表面點從l的方向被遮擋,因此它們被遮擋并且不接收光(因此它們不能反射任何)。在中間,我們看到從視圖方向v看不到一些表面點,因此當(dāng)然不會看到從它們反射的任何光。在這兩種情況下,這些表面點對BRDF沒有貢獻(xiàn)。實際上,雖然陰影區(qū)域沒有從l接收任何直射光,但它們確實接收(并因此反射)從其他表面區(qū)域反射的光(如右圖所示)。microfacet理論忽略了這些相互反射。

    ?

    5.1 從物理現(xiàn)象到BRDF

    利用這些假設(shè)(局部光學(xué)平坦表面,沒有相互反射),可以很容易推導(dǎo)出一個被稱為Microfacet Cook-Torrance BRDF的一般形式的Specular BRDF項。此Specular BRDF具有以下形式:

    其中:

    • D(h) :?法線分布函數(shù) (Normal Distribution Function),描述微面元法線分布的概率,即正確朝向的法線的濃度。即具有正確朝向,能夠?qū)碜詌的光反射到v的表面點的相對于表面面積的濃度。
    • F(l,h) :?菲涅爾方程(Fresnel Equation),描述不同的表面角下表面所反射的光線所占的比率。
    • G(l,v,h) :?幾何函數(shù)(Geometry Function),描述微平面自成陰影的屬性,即m = h的未被遮蔽的表面點的百分比。
    • 分母 4(n·l)(n·v):校正因子(correctionfactor),作為微觀幾何的局部空間和整個宏觀表面的局部空間之間變換的微平面量的校正。

    關(guān)于Cook-Torrance BRDF,需要強(qiáng)調(diào)的兩點注意事項:

    • 對于分母中的點積,僅僅避免負(fù)值是不夠的 ,也必須避免零值。通常通過在常規(guī)的clamp或絕對值操作之后添加非常小的正值來完成。
    • Microfacet Cook-Torrance BRDF是實踐中使用最廣泛的模型,實際上也是人們可以想到的最簡單的微平面模型。它僅對幾何光學(xué)系統(tǒng)中的單層微表面上的單個散射進(jìn)行建模,沒有考慮多次散射,分層材質(zhì),以及衍射。Microfacet模型,實際上還有很長的路要走。

    下面對Microfacet Cook-Torrance BRDF中的D、F、G項分別進(jìn)行簡要說明。

    ?

    ?

    5.2 Specular D

    法線分布函數(shù)(Normal Distribution Function, NDF)D的常見模型可以總結(jié)如下:

    • Beckmann[1963]
    • Blinn-Phong[1977]
    • GGX [2007] / Trowbridge-Reitz[1975]
    • Generalized-Trowbridge-Reitz(GTR) [2012]
    • Anisotropic Beckmann[2012]
    • Anisotropic GGX [2015]

    其中,業(yè)界較為主流的法線分布函數(shù)是GGX(Trowbridge-Reitz),因為具有更好的高光長尾:

    另外,需要強(qiáng)調(diào)一點。Normal Distribution Function正確的翻譯是法線分布函數(shù),而不是正態(tài)分布函數(shù)。google翻譯等翻譯軟件會將Normal Distribution Function翻譯成正態(tài)分布函數(shù),而不少中文資料就跟著翻譯成了正態(tài)分布函數(shù),這是錯誤的。

    其實,一些參考文獻(xiàn)會使用術(shù)語“法線分布(distribution of normals)”來避免與高斯正態(tài)分布(Gaussian normal distribution)混淆。

    ?

    5.3 Specular F

    對于菲涅爾(Fresnel)項,業(yè)界方案一般都采用Schlick的Fresnel近似,因為計算成本低廉,而且精度足夠:

    菲涅爾項的常見模型可以總結(jié)如下:

    • Cook-Torrance [1982]
    • Schlick [1994]
    • Gotanta [2014]

    5.4 Specular G

    幾何項G的常見模型可以總結(jié)如下:

    • Smith [1967]
    • Cook-Torrance [1982]
    • Neumann [1999]
    • Kelemen [2001]
    • Implicit [2013]

    另外,Eric Heitz在[Heitz14]中展示了Smith幾何陰影函數(shù)是正確且更準(zhǔn)確的G項,并將其拓展為Smith聯(lián)合遮蔽陰影函數(shù)(Smith Joint Masking-Shadowing Function),該函數(shù)具有四種形式:

    • 分離遮蔽陰影型(Separable Masking and Shadowing)
    • 高度相關(guān)掩蔽陰影型(Height-Correlated Masking and Shadowing)
    • 方向相關(guān)掩蔽陰影型(Direction-Correlated Masking and Shadowing)
    • 高度-方向相關(guān)掩蔽陰影型(Height-Direction-Correlated Masking and Shadowing)

    目前較為常用的是其中最為簡單的形式,分離遮蔽陰影(Separable Masking and Shadowing Function)。

    該形式將幾何項G分為兩個獨立的部分:光線方向(light)和視線方向(view),并對兩者用相同的分布函數(shù)來描述。根據(jù)這種思想,結(jié)合法線分布函數(shù)(NDF)與Smith幾何陰影函數(shù),于是有了以下新的Smith幾何項:

    • Smith-GGX
    • Smith-Beckmann
    • Smith-Schlick
    • Schlick-Beckmann
    • Schlick-GGX

    其中UE4的方案是上面列舉中的“Schlick-GGX”,即基于Schlick近似,將k映射為???,去匹配GGX Smith方程:

    ?

    ?

    六、基于物理的環(huán)境光照(Physically Based Environment Lighting )

    ?

    有了直接光部分,我們也需要環(huán)境光。所以PBR核心知識體系的第六部分是基于物理的環(huán)境光照,一般大家也直接默認(rèn)環(huán)境光照的技術(shù)方案是基于圖像的光照(Image Based Lighting, IBL)。這也是真正讓基于物理的渲染畫質(zhì)提升的主要貢獻(xiàn)者。

    ?

    漫反射環(huán)境光照部分一般采用傳統(tǒng)IBL中輝度環(huán)境映射(Irradiance Environment Mapping)技術(shù),并不是基于物理的特有方案,這里暫不討論。

    而基于物理的鏡面反射(Specular)環(huán)境光照,業(yè)界中一般會采用基于圖像的光照(IBL)的方案。要將基于物理的BRDF模型與基于圖像的光照(IBL)一起使用,需要求解光亮度積分(Radiance Integral),而求解光亮度積分通常會使用重要性采樣(Importance Sample)。

    重要性采樣(Importance Sample)即通過現(xiàn)有的一些已知條件(分布函數(shù)),想辦法集中于被積函數(shù)分布可能性較高的區(qū)域(重要的區(qū)域)進(jìn)行采樣,進(jìn)而可高效地計算準(zhǔn)確的估算結(jié)果的的一種策略。

    ?

    6.1 分解求和近似(Split Sum Approximation)

    ?

    基于重要性采樣的思路,將蒙特卡洛積分公式代入渲染方程可得:

    上式的直接求解較為復(fù)雜,進(jìn)行完全的實時渲染不太現(xiàn)實。

    目前游戲業(yè)界的主流做法是,是基于分解求和近似(Split Sum Approximation)的思路,將上式中的拆分為光亮度的均值和環(huán)境BRDF兩項。即:

    完成拆分后,分別對兩項進(jìn)行離線預(yù)計算,去匹配離線渲染參考值的渲染結(jié)果。

    而在實時渲染中,分別計算分解求和近似(Split Sum Approximation)方案中幾乎已經(jīng)預(yù)計算好的兩項,再進(jìn)行組合,作為實時的IBL物理環(huán)境光照部分的渲染結(jié)果。下面分別對兩項進(jìn)行簡單概括。

    ?

    6.2 第一項 預(yù)過濾環(huán)境貼圖(Pre-filtered environment map)

    第一項為,可以理解為對光亮度???求均值。經(jīng)過n=?v=?r的假設(shè),僅取決于表面粗糙度(surface roughness)和反射矢量(reflection vector)。這一項,業(yè)界的做法比較統(tǒng)一(包括UE4和COD:Black Ops 2等),采用的方案主要借助預(yù)過濾環(huán)境貼圖,用多級模糊的mipmap來存儲模糊的環(huán)境高光:

    也就是說,第一項直接使用cubemap 的mip級別采樣輸入即可。

    ?

    6.3 第二項 環(huán)境BRDF (Environment BRDF)

    第二項為,即鏡面反射項的半球方向反射率(hemispherical-directional reflectance),可以理解為環(huán)境BRDF(Environment BRDF)。其取決于仰角θ,粗糙度α和菲涅耳項F。 通常使用Schlick近似來近似F,其僅在單個值F0上參數(shù)化,從而使Rspec成為三個參數(shù)(仰角θ(NdotV),粗糙度α、F0)的函數(shù)。

    這一項的主要流派有兩個,UE4的2D LUT,以及COD:OP2的解析擬合。

    ?

    6.3.1 流派1:2D LUT

    UE4在[Real Shading in Unreal Engine 4, 2013]中提出,第二個求和項 ,使用Schlick近似后, F0可以從積分中分出來:

    上式留下了兩個輸入(Roughness 和 cos θv)和兩個輸出(縮放和向F0的偏差(a scale and bias to F0)),即把上述方程看成是F0 * Scale + Offset的形式。 我們預(yù)先計算此函數(shù)的結(jié)果并將其存儲在2D查找紋理(LUT,look-up texture)中。

    ?

    這張紅綠色的貼圖,輸入roughness、cosθ,輸出環(huán)境BRDF鏡面反射的強(qiáng)度。是關(guān)于roughness、cosθ與環(huán)境BRDF鏡面反射強(qiáng)度的固有映射關(guān)系。可以離線預(yù)計算。

    具體的取出方式為:

    即UE4是通過把Fresnel公式的F0提出來,組成F0 * Scale +Offset的方式,再將Scale和Offset的索引存到一張2D LUT上。靠roughness和 NdotV進(jìn)行查找。

    ?

    6.3.2 流派2:解析擬合

    COD:Black Ops 2的做法,是通過數(shù)學(xué)工具M(jìn)athematica(http://www.wolfram.com/mathematica/) 中的數(shù)值積分?jǐn)M合出曲線,即將UE4離線計算的這張2D LUT用如下函數(shù)進(jìn)行了擬合:

    float3 EnvironmentBRDF( float g, float NoV, float3 rf0 ) {float4 t = float4( 1/0.96, 0.475, (0.0275 - 0.25 \* 0.04)/0.96, 0.25 );t *= float4( g, g, g, g );t += float4( 0, 0, (0.015 - 0.75 * 0.04)/0.96, 0.75 );float a0 = t.x * min( t.y, exp2( -9.28 * NoV ) ) + t.z; float a1 = t.w;return saturate( a0 + rf0 * ( a1 - a0 ) ); }

    需要注意的是,上面的方程是基于Blinn-Phong分布的結(jié)果,https://knarkowicz.wordpress.com/2014/12/27/analytical-dfg-term-for-ibl/一文中提出了基于GGX分布的EnvironmentBRDF解析版本:

    float3 EnvDFGLazarov( float3 specularColor, float gloss, float ndotv ) {float4 p0 = float4( 0.5745, 1.548, -0.02397, 1.301 );float4 p1 = float4( 0.5753, -0.2511, -0.02066, 0.4755 );float4 t = gloss * p0 + p1;float bias = saturate( t.x * min( t.y, exp2( -7.672 * ndotv ) ) + t.z );float delta = saturate( t.w );float scale = delta - bias;bias *= saturate( 50.0 * specularColor.y );return specularColor * scale + bias; }

    上式中的specularColor即F0。

    EnvironmentBRDF函數(shù)的輸入?yún)?shù)分別為光澤度gloss,NdotV,F0。和UE4的做法有異曲同工之妙,但COD:Black Ops 2的做法不需要額外的貼圖采樣,這在進(jìn)行移動端優(yōu)化時,是不錯的選擇。

    ?

    6.3.3 其他方案

    Gotanda在SIGGRAPH 2010提出使用3D LUT[Practical Implementation of Physically-Based Shading Models at tri-Ace,2010]來存放環(huán)境BRDF,之后Drobot將其優(yōu)化為2D LUT[Lighting Killzone:Shadow Fall , 2013]。

    ?

    ?

    七、離線渲染相關(guān)(Offline Rendering Related)

    雖然我們目前主要關(guān)注的是實時渲染(實時光柵圖形學(xué)相關(guān),暫時不關(guān)注實時光線追蹤)領(lǐng)域,但很多時候,實時渲染也需要涉及到預(yù)計算,尤其是IBL相關(guān)的預(yù)計算,所以或多或少會用到離線渲染相關(guān)的知識。所以PBR核心知識體系的第七部分是離線渲染相關(guān)的主題。

    ?

    以下是與實時渲染結(jié)合相對緊密的離線渲染相關(guān)的核心主題以及概括總結(jié)(主要是統(tǒng)計學(xué)與概率相關(guān)):

    • 重要性采樣( Importance Sample):蒙特卡洛積分的一種采樣策略。思路是基于分布函數(shù),盡量對被積函數(shù)分布可能性較高的區(qū)域進(jìn)行采樣。
    • 多重要性采樣(Muti Importance Sampling, MIS)?:估算某一積分時,基于多個分布函數(shù)獲取采樣,并期望至少某一分布與被積函數(shù)形狀適配。即根據(jù)各種技術(shù)對采樣進(jìn)行加權(quán)計算,進(jìn)而消除源自被積函數(shù)值與采樣密度不匹配造成的較大反差。
    • 大數(shù)定律(Law of Large Numbers)?:在試驗不變的條件下,重復(fù)試驗多次,隨機(jī)事件的頻率近似于它的概率。即偶然中包含著某種必然。
    • 蒙特卡洛方法(Monte Carlo Methods)?:一種以概率統(tǒng)計理論為指導(dǎo)的數(shù)值計算方法。是指使用隨機(jī)數(shù)(或更常見的偽隨機(jī)數(shù))來解決很多計算問題的方法。
    • 低偏差序列(Low-discrepancy sequence)?:一種確定生成的超均勻分布列,也稱為擬隨機(jī)列、次隨機(jī)列,常見低偏差序列有Hammersley,Halton等。
    • 擬蒙特卡羅方法(Quasi-Monte Carlo Method)?:使用低差異列來進(jìn)行數(shù)值積分和研究其它一些數(shù)值問題的方法。

    與實時渲染結(jié)合相對緊密的離線渲染相關(guān)的內(nèi)容,后續(xù)文章會以專題的形式詳細(xì)探討。

    ?

    八、進(jìn)階渲染主題(Advanced Rendering Topics)

    ?

    前面的核心PBR主題都討論完成后,會有更多進(jìn)階的內(nèi)容浮出水面,他們共同組成了PBR核心知識體系的第八部分。

    以下是一個列舉:

    • 進(jìn)階著色模型
      • 布料BRDF(Cloth BRDF)
      • 清漆著色模型(Clear Coat Model)
      • 次表面散射BRDF模型(Subsurface Scattering BRDF Model)
    • 進(jìn)階材質(zhì)功能
      • 全能材質(zhì)(Uber Shader)
      • 分層材質(zhì)(Layered Materials)
      • 分層全能材質(zhì)(Layered Uber Shader)
      • 混合材質(zhì)(Blending Materials)
      • 過濾材質(zhì)(Filtering Materials)
    • 進(jìn)階理論
      • 物理光學(xué)(Physics of Light)
      • 波動光學(xué)(Wave Optics)
      • 基于物理的攝像機(jī)( Physical Based Camera)
      • 基于物理的光源(Physical Based Light)
      • 白爐測試(White Furnace Test)
    • 進(jìn)階BxDF
      • BSDF
      • BTDF
      • BSSRDF
    • 進(jìn)階材質(zhì)渲染
      • 皮膚渲染(Skin Rendering)
      • 布料渲染(Cloth Rendering)
      • 半透明表面渲染(Translucent Surfaces Rendering)
      • 頭發(fā)渲染(Hair Rendering)
      • 毛發(fā)渲染(Fur Rendering)
      • 車漆渲染(Car Paint Rendering)
      • 水體渲染(Water Rendering)
      • 濕潤表面渲染(Wet Surface Rendering)
      • 天空與大氣渲染(Sky and Atmosphere Rendering)
      • 薄表面材質(zhì)渲染(Thin Surface Rendering)
      • 體積渲染(Volumetric Rendering)

    以上這些內(nèi)容,作為進(jìn)階的主題,隨便選取其中的一個展開來討論,幾乎都會有不小的篇幅。目前的計劃是,是在前七章基礎(chǔ)PBR內(nèi)容討論完成后,再在這些主題中選取新的內(nèi)容,進(jìn)行更深入的討論。

    ?

    結(jié)語

    OK,這篇文章作為這個系列的開篇,是對PBR知識體系的一個概覽,相當(dāng)于開了一個頭,給全新的篇章描繪出了大致的輪廓。

    后續(xù)的文章,會對PBR知識體系的各個章節(jié),進(jìn)行更系統(tǒng)深入的論述。

    敬請期待。

    ?

    ?

    Reference

    [1] Burley B, Studios W D A. Physically-based shading at disney[C]//ACM SIGGRAPH. 2012

    [2] Montes R, Ure?a C. An overview of BRDF models[J]. 2012.

    [3]?https://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html

    [4] Karis B, Games E. Real shading in unreal engine 4[J]. Proc. Physically Based Shading Theory Practice, 2013

    [5] Lazarov D. Getting more physical in call of duty: Black ops ii[J]. SIGGRAPH Course Notes: Physically Based Shading in Theory and Practice, 2013.

    [6] Hoffman N. Background: physics and math of shading[J]. Physically Based Shading in Theory and Practice, 2013

    [7] Neubelt D, Pettineo M, Studios R A D. Crafting a Next-Gen Material Pipeline for The Order: 1886[J]. Physically Based Shading in Theory and Practice, SIGGRAPH, 2013.

    [8] Pharr M, Jakob W, Humphreys G. Physically based rendering: From theory to implementation[M]. Morgan Kaufmann, 2016.

    [9] Akenine-Moller T, Haines E, Hoffman N. Real-time rendering[M]. AK Peters/CRC Press, 2018.

    [10] Heitz E. Understanding the masking-shadowing function in microfacet-based BRDFs[J]. Journal of Computer Graphics Techniques, 2014, 3(2): 32-91.

    [11] Gotanda Y. Designing Reflectance Models for New Consoles[J], 2014

    [12] Lagarde S, De Rousiers C. Moving Frostbite to PBR[J]. Proc. Physically Based Shading Theory Practice, 2014.

    [13] Langlands A. Physically based shader design in arnold[J]. Physically Based Shading in Theory and Practice-SIGGRAPH Courses, 2014.

    [14] Burley B. Extending the Disney BRDF to a BSDF with integrated subsurface scattering[J]. Physically Based Shading in Theory and Practice'SIGGRAPH Course, 2015.

    [15] Drobot M. Practical Multilayered Materials in Call of Duty: Infinite Warfare[J]. Physically Based Shading Theory Practice-SIGGRAPH Courses, 2017.

    [16] Oren M, Nayar S K. Generalization of Lambert's reflectance model[C],1994

    [17] Gotanda Y. Beyond a simple physically based Blinn-Phong model in real-time[M]//SIGGRAPH 2012 course. 2012.

    [18] Gotanda Y. Practical Implementation of Physically-Based Shading Models at tri-Ace[J]. part of “Physically Based Shading Models in Film and Game Production,” SIGGRAPH, 2010.

    [19] Hammon Jr E. PBR Diffuse Lighting for GGX+ Smith Microsurfaces[J]. 2017.

    [20]?https://knarkowicz.wordpress.com/2014/12/27/analytical-dfg-term-for-ibl/

    [21] Drobot M. Lighting of Killzone: Shadow Fall[J]. Digital Dragons European Games Festival, 2013.

    [22] Material Advances in Call of Duty: WWII, Activision Community , Advances in Real-Time Rendering , SIGGRAPH 2018

    [23] 題圖來自《Assassin's Creed Odyssey》

    總結(jié)

    以上是生活随笔為你收集整理的【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。