本篇做爲理論的歸納介紹,並不涉及公式的部分
基於物理渲染的優勢
很容易就能夠做出真實和照片級的效果。
同一配置能夠適用於
在不一樣HDR光照環境下。
接口簡單而直觀,都是基於世界真實的參數。(如粗糙度,金屬度,等等)。
不須要美術去提供經驗性的"奇怪"參數和配置。
更容易去解決問題和擴展需求。
基於物理的渲染和傳統渲染區別
有着基於物理規則的光照模式
有着無處不在的fresnel效果
能量守恆「
energy conservation
」,物體平面的反射光沒法超過它所解接受的入射光
基於物理的材質,會分辨金屬和介電質,微平面的概念
線性空間的光照
,支持gamma矯正的,HDR渲染和tonemap
光與物質的交互(light and matter)
光是是一種橫向傳播的電磁波,電磁波的波長範圍很是廣,但只有390~760nm之間的一段波譜是人眼可見到的,也就是在圖形學裏對渲染着色起做用的部分。另外由於光有波粒二象性的緣故,有時候咱們在圖形學裏也會把光作爲光子
(photon)
來處理。
當光投射到傳感器(眼睛,照相機等)
上時
,顏色和亮度就會被吸取並感知,而光與物質交互後被感知的,就是物體的顏色。
物質對光的影響,能夠用折射率(refractive index
)來描述,當由複數來表示折射率時,它的實部影響速度(相對於真空中的速度
),虛部來影響光的衰減(被吸取),折射率會改變光的波長。
咱們先根據物質按照內部折射率是否均勻來進行分類:
均勻介質(Homogeneous Media)
內部密度相同的物質
,意味着他有惟一的折射率,對應透明的均勻物質來說(如水,玻璃),光經過時,並不會改版光的顏色或強度,而當物質對某一種可見光譜有吸取率的時候,那麼,光就會隨着在物質內的傳播距離而逐漸被吸取,而光的方向並不發生改變,這就是光被吸取(absorption
)。
光穿透玻璃和水時,方向,顏色和強度都不會發生
方向沒有變化,光但隨着距離會喪失強度(改版顏色),也就是光被吸取了。
非均勻物質(heterogeneous medium)
當
非均勻物質
內部的折射率很是忽然的時候,這時就會發生散射
(Scattering)
現象,光會被分割爲多個方向,但光的總量並不會發生變化。
除了以上兩種交互外,
物質還可能由於其餘能量發出新的光,稱爲自發光」
emission
「。
光與物質交互的三種方式,吸取,散射,發光。
光與平面的交互(light and object surface)
上一個段落講點,光在密度不一樣的物質內傳遞的現象,而渲染中最爲典型的,是發生在物體表面時,關於光與空氣和物質之間的散射效果。
這個時候平面散射光會分爲兩部分:進入平面的部分(折射,在物體內部傳播中被吸取或散射),從平面出去的部分(反射)。
一個假設完美無限光學平坦的平面(簡稱光學平面)反射效果,平面兩側的空氣和物體有各自的折射率
但實際上,平面大多都不是光學平面(除了鏡子或鏡頭等),而是一種微幾何體(
Microgeometry
),表面都會有一些比可見光波長要大的不規則凹凸,但又小到沒法覆蓋一個像素或者採樣點,因此,咱們就把這種非光學平面,理解爲一組微小光學平面的集合,而可見光的反射,其實是在平面各個點上輕微不一樣方向的反射集合,也就是後面會提到的微平面理論(Microsurface Theory
)。
roughness
上面的平面相對平滑時,表面方向的變化也比較輕微,從而反射光的方向變化也較小,有了較清晰的反射。而下面的表面粗糙,表面方向的變化範圍也較普遍,反射光的方向變化也比較大,出現了模糊的反射。
兩個平面在微觀上的粗糙度(roughness)不一樣致使不一樣的反射效果
漫反射光與鏡面光(diffuse and specular)
這裏,咱們光和平面交互分爲兩個項目來描述,從平面直接反射
的部分稱爲鏡面反射光(
Specular
),來源於拉丁語的「Mirror」,PS:鏡面光的顏色,一般就是燈光的顏色,只有照射在金屬上纔會改變顏色(實際是金屬吸取了特定波長的光),傳入到物體內部,而通過折射,被材質吸取(轉變爲熱能),或者內部進行散射,一些散射光最終會從新返回從平面折射出來
,並被攝像機或眼睛所捕捉到,稱爲漫反射光(Diffuse)。漫反射光被物質吸取並散射後,會成爲不一樣波長的光,這也就給予了物體顏色,好比物體吸取了藍色之外的光,那物體就是藍色的,而由於散射的混亂比較均勻,從每一個方向看起來都是同樣,因此這點和鏡面光不同。也可使用這個名字albedo來描述。
非光學平面反射
(
Surface Reflectance
)
和折射散射
(
Subsurface
Reflectance
)
的宏觀視圖,造成了Diffuse和Specular。
金屬和非金屬材質
物體內部的折射光的做用,取決於物體內部的組成,內部組成的不一樣,能夠分爲,金屬(metal)導體,電介質(Dielectrics)絕緣體和半導體(Semiconductors ),由於半導體在渲染中出現的機會很少,在處理物體時簡單的分組爲金屬和非金屬就能夠了。金屬會吸取全部的折射光,並且一般會被絕緣體的反射率要高,一般的反射率要達到60%~90%,而絕緣體則是0%~20%,反射率高,就防止了入射光被吸或折射,這樣,金屬就有了」閃亮「的外觀。php
金屬的折射光能量都馬上被自由電子吸取
而非金屬(絕緣體),光會在內部進行吸取和散射活動,最後,一些折射光會經過散射,從新從入射平面反方向射出
非金屬的折射光會進行散射
導體的反射會跨越光譜,因此反射是有顏色的,雖然顏色反射在導體裏比較罕見的,但在一些平常的材質裏(金,銅,黃銅)仍是能夠看到這種效果,而絕緣體的反射一般是他們的原本顏色,由於金屬會吸取全部的穿透光,也就沒有任何漫反射(diffuse)部分,但金屬氧化的部分和一些表面殘留物仍是會散射少許的光。也是由於這些緣由,可使用「metalness」(金屬度)這種參數,雖然不是純粹的pbr,但更受美術的喜歡。
不一樣材質的漫反射顏色,金屬爲0.
次級表面散射(Subsurface Scattering)
從前面的圖中,能夠看到折射後的散射光從平面不一樣的點發射出來,和原始的入射點的距離也各不相同,能夠統稱爲次級表面散射光,根據散射出的距離和入射點像素的大小的關係,能夠分爲兩種狀況:
如左圖所示,當像素的尺寸大於入射到出射點的距離時,這個距離就能夠被忽略,能夠認爲這個平面散射出的光和入射光是在相同點上,也就是右圖的樣子,也就是咱們常說的漫反射。
當像素小於出射到入射距離時,每一個點的着色就會收到其餘光入射到其餘點的影響,也就是常說的「次級表面散射」技術,很重要的一點是,它和普通的漫反射着色是一種物理現象(都是折射光的次級表面散射),惟一不一樣的就是散射的距離與觀察點大小的關係,一個一般被認爲是「次級表面散射」的表現,當在較遠的距離觀察時,就能夠被認爲是漫反射着色(例如遠距離角色的皮膚),而「正規的漫反射着色」在很近距離觀察時,也會有次級表面散射的效果。
無處不在的Fresnel反射
Fresnel表現的是材質的反射率
和入射角(也就是光源入射向量和平面法線向量的夾角
)的對應關係,也就是說,入射光的角度越大,反射率也會越強,Fresnel反射項一般成爲F( )
以水面爲例,正常入射事只有3%的反射,而水平時則幾乎到100%。
PBR的一個改變,就是對
fresnel方程的修正上。這個會在下一篇有公式的章節作進一步解釋
對於因此的材質來講,當以掠射角觀察時,光滑物體接近「邊緣」的地方,會造成完美的鏡面,也就是說
特定的角度上,
「任何表面光滑的物質均可以成爲完美鏡面」。
除了金屬外,大部分的材質的反射和角度對應曲線或梯度的變化都不是很大
非金屬的反射係數,在邊緣處亮度更高
當入射角度爲0時,非金屬材質(2%~8%),水和液體是2%,磚塊8%,其餘有機材質和塑料是5%,半導體和晶體是15%~50% 金屬60%~90%
若是要達到真實的
fresnel,那麼美術對
fresnel的控制應該越少越好,須要提供一些參數值來使用,一般是光澤度(Gloss,或粗糙度 Roughness)和反射率。提供一個基礎反射率,來設置平面最小的反射值,讓
fresnel曲線從這個最小反射值開始,以知足不一樣角度的需求。
Surface Reflectance
前文已經提到了微幾何體,之因此有微平面的概念,由於從宏觀來看,在咱們渲染模型網格時,使用法線貼圖就能夠描述表面小的細節,但這樣仍然會有必定的缺失,不少真實世界的平面上,仍是有一些微小的凹陷,裂縫或突起,而用肉眼是很難看清楚的,小到連正常大小的法線貼圖也沒法來表現,雖然肉眼沒法看到,但這些微觀特徵,仍是對Diffuse和Specular產生了影響。
微平面的細節,對反射的影響更多,也就是Specular,由於粗糙的微平面會把反射光分散或者內部遮擋,因此有了下面兩個項目來描述這個現象
Normal Distribution Function
由於微幾何體的因此平面的方向,並非均勻分佈的,若是是分佈比較均勻的光滑平面,那麼光就會在幾乎相同的方向反射,產生清晰的高光,若是粗糙表面則是模糊的高光.
有多少微平面點的法線更傾向宏觀平面的法線方向,咱們把這種平面法線方向分佈的統計,稱之爲microgeometry normal distribution function
D()
,和fresenl方程不一樣的是,D()並無一個相似0~1的範圍,而是來幫助肯定微平面法線在某一個給定方向上的集中度。
因此,D()決定了高光的鏡面反射高光的大小,亮度和形狀,一些D()會提供前面提到的相似"Roughness
(粗糙度)
"的參數(也能夠是
glossiness
),當粗糙度下降時,微幾何體平面的法線方向就會更集中在宏觀的平面法線方向上,
D()
的值也會變高。除了指定粗糙度參數外,也能夠經過傳遞一張
Glossn map的方式提供更高的細節。
不一樣
Roughness的表現
左側Specular Map ,右側 gloss map
Geometry Function
由於微幾何體的構造緣故,一些入射光的平面點被內部遮擋,成爲了內部陰影而沒法接受光照(也就不能反射光)。
shadowing現象
而有一些反射光被內部遮擋,他們的反射光沒法被觀察到,雖然有反射光能夠屢次反彈後再被視點觀察到,但在微平面理論裏能夠忽略不計了。
masking現象
這由於有這種現象,因此須要有一個
Geometry Function
G(),
來表明反射光的
可見度,
因此G()是在0~1之間的一個範圍值,在着色模型裏,有時會和其餘參數合併稱爲
V()
(Visiblity)。和D()同樣,由於微平面有凹凸感,當它的粗糙度提升時,shadow和masking的現象也會增長,粗糙度高的平面會光滑平面更陰暗一些,
G()
也要收到roughness參數的影響
。
另外G()也是下面要講的能量守恆的一個基礎,它使得反射光不會高於平面的入射光。
Energy Conservation 能量守恆
鏡面反射光(Specular)與漫反射光(Diffuse)是相互排斥的,由於離開表面的光總量不能他接受的入射光強,你的漫反射與鏡面反射綜合不能超過1

這意味着,若是你的但願材質有較高的鏡面反射效果(高反射率),就須要要去下降漫反射,能量守恆是PBR的一個重要的方法,可讓藝術家在設置反射率和反照率時(高光顏色和漫反射顏色)不會違法物理定律
同一個材質,從100%的漫反射到100%的鏡面反射轉化過程
能量守恆對高光部分的處理,也稱爲「Energy Preserving Specular」,一般是在渲染方程裏添加Normalization Factor來實現的能力守恆
是否使用
Normalization Factor的對比,左下面使用Factor的亮度更淡了一些,由於左上非能力守恆的模型反射了更多的光,而下面能力守恆的模型,高光變得更加明亮和集中。
當把微平面理論引入到着色系統後,那麼反射多少光,就要受到平面粗糙度的影響,渲染粗糙度較大的表面時,會得到較大範圍和模糊的反射光,而光滑表面的則更清晰。雖然材質都反射相同總量的光,但粗糙平面的會把把反射分散到不一樣的方向,而光滑平面則反射的更爲集中。好比你高光半徑提升了10倍,那麼暗度將提升100倍。

、
Gloss的變化的反射效果,
Normal Distribution Function(D())
也必須是能量守恆所的。
實際應用上漫反射較多並且粗糙的材質,會反射模糊和更廣闊的高光,比較光滑而反射率高的材質則反射更明亮和緊湊的高光
理論概述就先到這裏,本文也是從不少資料中整理而來,不能算是原創吧,資料太多,可能收集和描述的不夠全面,隨着後面章節的添加,這個部分應該還會作進一步的修改。