PBR基於物理渲染

什麼是基於物理渲染(PBR)?

傳統3D材質製作方法是基於藝術家的手藝的,由美術根據個人評估繪製Diffuse貼圖調整顏色後進行渲染。好處是畫成什麼顏色就是什麼顏色,製作流程簡單修改直觀,缺點則是質量不穩定,難以標準化和做進一步的細緻分工,導致遊戲製作規模受到人力限制;此外,在複雜變化的光照環境下,僅通過RGB值定義的貼圖往往無法達到足夠的擬真感。

基於物理渲染的本質,則是通過對真實世界的物理現象進行逼近、模擬、再現,使3D對象在不同環境下都能展現出逼真的渲染質感,並通過材質的參數化將材質製作這一手工業流程轉化爲標準化流水化的工業流程。

爲了實現這個目標,對於貼圖的定義就不能再只是傳統的RGB值,而是一系列與真實光學現象有關的實際測量物理參數;由於對於一個特定的物理材質,其物理參數總是恆定的,這也使得通用材質庫成爲可能。

 

以上,可以很容易歸納出PBR的三塊核心內容:

  • 與人類視覺有關的真實光學現象/過程有哪些

  • 一個基於物理渲染的材質球應該具有哪些對應的參數

  • 接收參數後,如何完成渲染過程獲得最終輸出的顯示色彩


視覺基礎眼睛如何看見物體

 

眼睛如何看見物體

  


一切皆爲光的反射,PBR的本質也就是算法模擬光學過程。

光照Lighting、着色Shading、感光Sensitising即是一次完整視覺過程的三個步驟,後面會依次講到……


人眼能感受到的光

  



顏色由光的波長決定,與一些散射/衍射現象有關


光照Lighting

 

基礎計量單位 

  

 

  • 球面度(sr)

    立體角的國際單位。它可算是三維的弧度。以r爲半徑的球的中心爲頂點,若展開的立體角所對應的球面表面積爲r2,該立體角的大小就是一球面度。球表面積爲4πr2,因此整個球有4π個球面度。

          

  • 坎德拉(cd)
    定義光源亮度的單位。1cd = 1/683W / sr,約爲一支蠟燭的亮度,或220V下1W白熾燈的亮度。之所以會這樣是因爲這個單位在制訂時就考慮到了人的視覺……

  • 流明(lm)
    光通量單位,用於衡量在空間中傳播的光的強度。1坎德拉的點光源向周圍的球形空間內投射出的光通量爲 4π流明(或者1球面度流明)

  • 勒克斯(lux)
    照度單位,用於衡量一塊麪積上受到的光照強度。1勒克斯= 1流明/平米 = 1坎德拉/球面度。

  • 平方反比定律
    光照與距離遠近的平方成反比例衰減。即對於一個光源,若距離該光源距離爲r的固定面積上的光通量爲x,則距離該光源2r處同樣面積上的光通量爲1/4x。(基於能量守恆)



散射/折射

  

光照與距離遠近的平方成反比例衰減。即對於一個光源,若距離該光源距離爲r的固定面積上的光通量爲x,則距離該光源2r處同樣面積上的光通量爲1/4x。(基於能量守恆)



 

米氏散射

  

當介質內微粒直徑>=入射光波長時,會發生米氏散射。雲/霧等基本均爲米氏散射。其特點爲:

  • 大部分入射光線會沿着前進的方向進行

  • 微粒半徑會改變米氏散射模型(具體來說是光線偏折角度及偏折比例)



對於自然環境影響如下:



瑞利散射

  

當介質內微粒直徑<=入射光波長的十分之一時,會發生瑞利散射。瑞麗散射的散射強度與光波長的4次方成反比,因此短波長的藍光的瑞利散射更劇烈。因此天空是藍色的而陽光則偏黃。



IES Light

  

照明工程協會(Illuminating Engineering Society),提供了標準化的照明燈具的光度學數據(PhotometricProfile)數據,PBR光源製作時的重要數據來源。

IES Light = 最大光強(坎德拉) * IESPhotometric Profile




燈光色溫(K)

  

色溫低則偏暖,色溫高則偏冷。

幾個可供參考的色溫值:

  • 晴朗藍天         10000-12000K

  • 多雲有雨         8000-10000K

  • 薄霧         6500-8000K

  • 日光型熒光燈         6500K

  • 正午陽光         5500K

  • 電子閃光燈     5500K

  • 早晨或下午的陽光         4000-5000K

  • 攝影棚燈光     3000-4000K

  • 石英燈     3500K

  • 鎢絲燈具         2700-3200K

  • 黎明、黃昏     2000-3000K

  • 燭光         1800-2000K



燈光類型

  

平行光、點光、面光。





着色Shading

PBR中,Shading的本質其實就是計算材質對入射光的反應,因此會牽涉到以下兩個內容:

  • 材質本身的物理參數

  • 光線反射計算模型


雙向反射分佈函數(BRDF)

  

BRDF:Bidirectionalreflectance distribution function,基本式爲:,用於定義光線在不透明表面反射的函數,其中變量包括:光的入射角、不透明表面法線、光線反射角,函數返回值爲反射光線與入射光線的輻射率比值。



這一函數實際上是對於真實世界光照的簡化逼近,將真實世界中複雜的光照反射過程簡化成基於反射點單點的概率分佈函數:



獲取一種材質的BRDF,有三種方法:

  • 基於經驗。也就是開發人員根據自己的經驗推測出的公式(例如200多年前就存在了的用於描述粗糙表面光線反射的Lambert光照模型)

  • 基於物理模型。根據物理理論創立的數學模型,後面會詳細介紹

  • 數據驅動模型。用儀器測量並導出數據,簡單省事兒……(隨手網上找了張不怎麼高大上的圖)



物理着色模型的基本原則

  

 

  • 一致性:入射光源與觀察攝像機交換位置後,得到的反射計算結果應該等價(即光路可逆)

  • 能量守恆:入射光線能量 >= 反射光線總能量

  • 恆爲正值:傳播正能量


經典通用模型

  

Pixar與1990年首先定義的渲染模型,沿用至今,該模型下,觀察者所見到的材質某一點的顏色 = ambient + diffuse + specular,如下圖:


Diffuse即漫反射,之後會詳細介紹。

Specular爲高光反射,之後會詳細介紹。

Ambient爲環境光,這裏沒有展開細說……


漫反射 Diffuse

  

漫反射實際上是光在射入物體表層後,在物體內部折射散射後,再離開物體表面後形成的,後面有幾個簡化的數學模型,用於近似模擬這一過程。

  • Lambert模型

  


Lambert模型是最簡單的光照模型,該模型認爲當光照射到一個粗糙表面時,會向周圍均勻反射(各向同性),反射光的強度與(入射光方向和反射點處法線夾角的餘弦)成反比。


  • Oren-Nayar模型

  

基於Lambert光照模型的改良,該模型認爲材質表面可以視爲由多個不同法線的光滑Lambert表面所構成粗糙表面,但每個子表面的光線反射可以用Lambert模型進行描述。因此在這個模型可以視爲多了一個“粗糙度”參數的Lambert模型,或者可以將Lambert模型視爲粗糙度=0的Oren-Nayar模型。



模型公式中可以看到有個重要的參數ρ,表示反照率。


  • 模型參數:反照率(Albedo

  

物體反射光輻射量與入射光輻射量之比即爲反照率。在3D製作中,這代表一張正確的Diffuse貼圖。而所謂“正確”的Diffuse貼圖,需要滿足以下條件:

  • 不受漫反射光線以外的額外光線影響(例如高光、環境光、陰影等)

  • 不受曝光偏差影響亮度

  • 不受色溫影響色相



一旦Diffuse貼圖製作不滿足以上三條要求,整個PBR渲染出來的結果就會與實際嚴重不符,所以要獲得正確的Diffuse貼圖也需要一些方法……

  • 色卡法。在拍攝取材時使用標準色卡,之後可根據色卡調整照片的色溫及曝光。但這個方法無法消除材質上的高光。

  • 交叉偏正法。在專門的封閉空間內,使用偏振光照明,用偏光濾鏡過濾高光反射,再拍攝取材。缺點嘛就是麻煩……



高光 Specular

  

目前普遍採用Cock-Torrance模型,該模型類似Oren-Nayar模型,也認爲材質表面有無數個法線各異的微表面,但不同之處是,Cock-Torrance模型中,這些微表面僅進行鏡面反射。由於是鏡面反射,一旦給定了入射光源,每一個微表面將僅有一道反射光。


在該模型中,當且僅當觀察者視線與反射方向光線重合時(亦即反射光線可以抵達觀察者攝像機),對應的微表面才被激活,而未被觀察到的微表面則不被激活。

在高光反射過程中,會牽涉到這麼幾個玩意:

  • 微表面相關的分佈函數

  • 幾何衰減函數(根據經驗人工修正簡化數學模型導致的問題)

  • 菲涅爾函數(用於處理菲涅爾現象)


接下來會解釋這三者。


  • 分佈函數

  

分佈函數用於描述材質微表面的顯微結構,或者說描述其微表面的粗糙度,其範圍在0-1之間,數值意義爲微表面斜率的平方根(即粗糙度越大,則微表面傾斜更厲害)




  • 幾何衰減函數

  

在現實世界中,崎嶇的表面會對入射光線和反射光線都發生遮擋,如果忽視這一現象直接應用微表面計算高光時就會出現一個問題:粗糙的表面實際上大大增加了反射表面積,會導致直接計算得出的反射光能量高於入射光能量總和,違反了能量守恆定律。因此需要引入幾何衰減函數修正反射光光量。在做光線遮擋修正時一般僅考慮入射光被遮擋和反射光被遮擋這兩種情況,現實世界中還會出現光線的多次反射,一般就都忽略了,實在是做不到啊……


現存的分佈函數即幾何衰減很多,基本都是基於概率分佈的數學逼近;目前最常用的是GGX。



  • 各向異性 Anisotropic

  

有些材質在不同方向上的高光表現是一樣的,這稱爲各向同性;例如一塊絕對光滑的金屬板。

有些材質在不同方向上的高光表現是不同的,這稱爲各向異性;例如一塊經過人工打磨拉絲的金屬板,或者尼龍襪。

當物體表面的微表面法線呈現有規律分佈時,就會表現出各向異性。



  • 高光剔除Specular Occlusion 

  

對於物理模型的人工修正,用於減少一些不應受光部位出現反光的漏光問題。這並不是嚴謹的PBR模型流程(亦即在完美的PBR中這一步應該不存在)




 

      
  • Cavity

  

用於模擬顯微結構所形成的凹陷孔洞,與高光剔除一樣,是非PBR的人工經驗修正

應該是用來給物件增加歲月滄桑感用的,不展開…… 



 

      
  • 模型參數:電導率Metallicity

  

該參數用於描述材料的電導率,0表示絕對絕緣,1表示毫無電阻(超導體),0和1幾乎都不會出現在真實世界中。

該參數的物理意義涉及到電磁波在物質中傳播的物理模型:電導率越高的材料,則其帶有的自由電子就越多。當作爲電磁波的光接觸到材料時,電導率高的材料會立刻將光能吸收,並很快隨着電子能級態的改變而重新將光反射出去。

放到PBR中,電導率1的材質將完全不再有任何漫反射,只會進行鏡面反射。



  • 模型參數:反射率 Refelectance

  

在材質表面正上方打光,材質反射回光源的高光佔入射光光通量的比例即爲反射率




  

菲涅爾函數用於描述菲涅爾反射現象:即材質的反射率均會隨着觀察者視線與其表面法線夾角大小改變;對於非金屬材質來說,通常該夾角越小(即從材質正上方觀看),反射率越低;該夾角越大(即側視),反射率越高。




以下是某著名的菲涅爾函數表:


可以看到金屬是一類很特別的材質,其會在視線與材料表面夾角約60-75度時反射率下降,之後再75-80度角時再急劇升高至1。


  • 模型參數:孔隙率Porosity

  

用於描述物體表面的孔隙,用於計算液體浸潤對材質的影響。並非所有PBR系統都會帶有該參數。




感光Sensitising

目前能參考的感光物件有兩種:CMOS/CCD,人眼。

簡單來說,人的視覺是非常複雜的,例如人眼所看到的其實是大腦經過後期加工完成的圖像,因此具有非常不科學的寬容度和視野範圍,而且針對人感興趣的地方,大腦還會動態改變視覺焦點內外的解析度……所以PBR只能參考CMOS/CCD來調整成像效果,畢竟人眼實在太難逼近了,臣妾做不到啊……






所以接下來,就要涉及到成像時的兩個重要步驟:曝光與後期處理。


曝光

  


現實世界中的亮度範圍、相機可接受的亮度範圍和遊戲中最終可以顯示的亮度範圍是不同的,因此需要控制到達攝像機光亮,亦即控制攝像機的曝光。

在這裏要區分一下“曝光值”和“曝光量”這兩個單位:


以及,目前絕大多數遊戲引擎的感光度ISO都設定在100。

然後是以此衍生出的一批數據:




(感覺以後做VR早晚都得查這張表……)

在這裏演講者提到,使用曝光量爲參數進行設置比較好,一來很直觀(與最終效果直接相關),二來可以將光圈、快門速度等留給後期處理。


後期處理

  

後期處理包含色彩調校、運動模糊、景深、暗角等,基本都和光圈大小、快門速度、焦距掛鉤。

  • 光圈越大,則景深越小

  • 光圈越大,暗角越明顯

  • 快門越慢,運動模糊越明顯



HDR Tone Mapping

  

遊戲引擎最終能呈現的圖像色彩每個顏色通道僅能保留8bit,而相機能接受的光色範圍卻更大,因此需要在最終輸出畫面前去除掉一部分色彩信息、保留甚至增強畫面的動態層次。這便是HDR Tone Mapping的工作內容。

在去除色彩信息的過程中,高動態畫面向低動態畫面映射時往往會導致亮度損失,因此Tone Mapping常常需要選擇性調整亮度。這裏要指出,人眼對於暗部的細節感知度更高。

演講者在此對比了Reinhard和Filmic兩種常用的Tone Mapping曲線,其中Filmic曲線還做了一些取巧,做了一根S型的Mapping曲線,以此拉大畫面的對比度。總之呢就是,HDR Tone Mapping要怎麼搞,還是得看項目的藝術風格方向是啥樣的。






結束



現在再看Unity的PBR Shader,這參數應該能看懂了嗯~

轉:http://zsydeepsky.lofter.com/post/1cbcb2b2_969a105

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章