進階光照與材質之光照和反射模型

來源:互聯網
上載者:User

標籤:

第五章講述了一些漫反射模型和鏡面反射模型的原理和數學公式
博主在unity中實現了一下,把部分結果貼在上面

有下面幾個主題:
渲染公式
基本光照定義
光照和lambert法則
雙向反射分布函數BRDF
漫反射材質原理簡介與模型
鏡面反射材質原理簡介與模型


基本光照定義對於我們眼睛可見的光對於表面的作用,他們會發生,反射,穿透,折射,吸收,或者表面自發光。

對於所有物體的光照基本公式如下


 如果表面不發光則EmittedLight為0。
接下來會討論許多種形式的反射函數reflectance Function

irradiance輻照度:表面每單位面積接受到的所有能量(包括光能和其他能量)
illuminance照度:表面每單位面積接受到的所有光能(只有光能)
radiance輻射:表面每單位面積反射的的所有能量(包括光能和其他能量)
luminance亮度:表面每單位面積反射的的所有光能(只有光能)
不同的材質可能會反射不同數量的光為不同方向

光照的lambert法則
同等數量的光照射到的表面積越小,單位表面積受到的能量越多。
當增加表面法線與入射角度增加時,受到光照的表面也增加,說明單位表面積收到的能量越少。
當光照方向與表面法線垂直時,光線正好擦過表面,受到光照為0,但是自然界不可能出現這種狀況,因為物體材質都是粗糙的,會受到其他表面反射光的照明。
物體的Lambert漫反射可以用法線與入射角度的cos值表示,光照強度的範圍在0-1.cos的範圍為-1-1,必須把其限制在光照強度範圍內,否則之後的計算會出現錯誤結果。
公式如下
 
光強IL是一個顏色值。在某些情況下,材質在不同的色彩通道有不同的反射行為。

接下來要講述的反射公式他們都有著微妙的不同,但都是同一種方式-BRDF。

BRDF
BRDF是描述入射光怎樣反射為出射光的函數,用來求出出射光強,我們只關注進入眼睛的部分反射光。BRDF並不適合所有材質
BRDF’有兩個屬性
1.    他是雙向的,意味著可以互換光照入射方向和出射方向,得到的結果是相同的
2.    真正的BRDF服從能量守恒定律

BRDF所需參數如下
 
BRDF也依賴于波長。
BRDF與著色模型相比計算更加複雜,理論更加嚴謹,更符合真實世界的光照,嚴格遵守能量守恒定律。

各向同性與各向異性各向異性意味著反射屬性依賴於視角和表面法線,一個例子就是摩擦過的金屬,在不同角度存在不同數量的反射光線
 
後面將會實現各向異性效果。


漫反射模型Lambert模型非常簡單但是並不適用於所有材質,效果不真實,其材質均勻,不能反映粗糙度帶來的變化。
注意:因為恰好進入眼睛的是物體表面的一小部分部分反射光,並且光射到表面其部分會被吸收,能量會被減弱,所以沒有絕對的光強為1的物體表面,比如,假使一個反射光強為1(錯誤)的物體表面,向他打純紅色的光,他是不會變為紅色的,因為純光強為1編碼為RGB格式為(1,1,1),而純紅色的光為(1,0,0)所以不會為紅色,所以這個是錯誤的,自然界中,無論我們看著多白的物體,打上紅光也變紅,這就是能量守恒定律,自然界的反射光強的最大極值為1/π,這也解釋了為什麼一些基於物理漫反射模型會除以π的原因了。
遊戲中基於物理的渲染能夠更好在HDR高動態範圍映像中會有更真實的效果。

Oren-Nayar漫反射模型Lambert過於均勻不能表現材質的粗糙度,比如灰塵,粘土,衣服等等高度回射的材質,回射是物體表面粗糙,存在一定數量的反射光指向光源,Oren-Nayar能更好的實現這種回射效果,顯得更為平坦,尤其是實現與光線方向相同的時候。
博主之前看過風之旅者的ppt,他們就是用Oren-Nayar模型來實現鬆散沙子的漫反射的,效果真實可信
Oren-Nayar類比的粗糙的小面非常小,螢幕上一個像素包括大量的方向不同的小面在一起,而對於Lambert只包含一個面
對於模型的粗糙程度,描述這些小平面的方向作為一個平均值為0的隨機高斯分布。根據這個,可以用一個標準差來度量表面的粗糙程度,標準差越高說明這些小平面的方向越各自不同,表面就越粗糙。我們把這個控制粗糙度的變數設為σ。
公式如下:
 

實現結果:


Minnaert模型作者說實現效果像天鵝絨,博主感覺。。。參數調大一點直接像高光了好不好。。。總之博主認為效果不好。。。
Minnaert模型意圖沿著邊緣發射“黑光”,使得結果非常像天鵝絨(才不像。。。)
公式如下:
 
實現結果:



鏡面反射模型鏡面反射與漫反射並不相同,漫反射是向所有方向反射,而鏡面反射只向鏡面方向反射,
 
ward反射模型ward反射模型比phong更加物理精確。
它含有各向同性各向異性兩種模型
各向同性:
sigma變數用來控制粗糙度
 
實現結果:



各向異性:
兩個變數代表水平、垂直兩個正交方向的粗糙度
 
其實他這個公式的eta方位角聽不清楚的,沒給明tangent怎麼求,博主又找了些資料遂實現之:


結果如下:





視覺化的結果如下,左側為各項同性的高光,右側為各向異性的高光,各向異性這種不規則的形狀說明反射更傾向於給定的方向
 



schlick模型schlick模型相比於phong模型計算消耗要少一些,免去了指數運算,但是效果相對phong有差別
公式如下:
 

實現結果:



Cook-Torrance模型Cook-Torrance模型基於Torrance和Sparrow致力於建立一個BRDF來類比金屬鏡面反射

基本原理是假設物體表面是由無數不同方向的絕對光滑的小微面組成,存在幾何對光照的影響,比如凹凸產生的投影以及對光線的阻擋。
模型也含有菲涅爾項在不同角度的入射光線的反射光線的數量。完整的基本公式如下:
 
有三個重要的項F,D,G來控制不同的效果。D控制粗糙度,G為幾何項,控制小微面相互之間的陰影和遮擋,從而決定鏡面反射光數量

G項

公式:

 
G項沒有什麼額外的依賴物理屬性的參數來控制效果變化

F項F項為菲涅爾項,決定從小微面反射光線的數量並且控制物體視覺的的金屬性程度。
公式如下:
 
菲涅爾有時依賴波長來產生豐富的效果。

D項

D項為法線分布項,用來控制小微面的斜率從而決定表面粗糙度。D項有很多種模型來實現比如blinn,Beckmann,並且未來還會研究出更多種D模型,具體可以看這篇文章:

Unity3d 基於物理渲染Physically-Based Rendering之specular BRDF



本書講了兩種方法
Beckmann:
 

和另一種基於高斯分布的Blinn,Blinn計算起來消耗更小:
 

全部結合起來實現結果是這樣的:





近期更新下一章

 

博主近期渲染:

2016的渲染

2015後半段的渲染


 

                              ---- by wolf96   http://blog.csdn.net/wolf96














進階光照與材質之光照和反射模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.