光線
1. 光
光在均勻透明介質(zhì)中遵循直線軌跡,同時(shí)光在非透明表面以及不同介質(zhì)中的反射和穿透軌跡也是有跡可循的,因此我們可以直接推斷并畫出光的路徑(如圖1所示)。
反射:當(dāng)光線照射到表面時(shí),會發(fā)生反射。此現(xiàn)象遵循反射定律,即光線的入射角等于反射角。
折射:當(dāng)光從介質(zhì)A進(jìn)入介質(zhì)B時(shí),會發(fā)生折射,折射路徑為直線。
當(dāng)光線照射到表面時(shí),它可能會被反射或折射,也可能最終被介質(zhì)吸收。但值得注意的是,光吸收不會發(fā)生在物質(zhì)表面。
和 - 和
2. 吸收和散射——透明和半透明
當(dāng)光穿過非均勻介質(zhì)或半透明材料時(shí),可能會被吸收或散射:
吸收:當(dāng)光被吸收時(shí),光的強(qiáng)度會降低,因?yàn)楣獾哪芰繒D(zhuǎn)換成其他形式(通常是熱量)。此外,由于不同波長的光被吸收的方式不同,光的顏色也會發(fā)生變化。但是,光的角度保持不變。
散射:光線散射時(shí),光線的方向可能會隨機(jī)改變,偏轉(zhuǎn)角度則取決于材質(zhì)本身。但散射并不會改變光線的強(qiáng)度。散射是生活中常見的現(xiàn)象,耳朵皮膚的透光率就是一個(gè)很好的例子:由于耳朵的皮膚很薄,我們可以觀察到從耳朵后面穿透進(jìn)來的散射光(下圖2)。
當(dāng)光沒有散射,吸收較弱時(shí),它可以直接穿透材料表面,比如??透過玻璃,我們就可以直接觀察到另一側(cè)的光。例如,如果你在一個(gè)干凈的游泳池里,當(dāng)你在水中睜開眼睛時(shí),你大致可以看到遠(yuǎn)處的池壁;相反,如果游泳池很臟,這些雜質(zhì)顆粒就會使光線發(fā)生散射,從而降低能見度。
光在這樣的介質(zhì)中穿透得越遠(yuǎn),散射和/或散開的程度就越大。因此,材料的厚度是光散射和吸收的重要因素。厚度圖可用于描述物體的厚度,并可用于著色器進(jìn)行渲染。
和
3. 漫反射和鏡面反射
高光反射:光線在完美平面上反射時(shí),根據(jù)反射定律,反射角等于入射角,屬于高光反射。但現(xiàn)實(shí)生活中,大多數(shù)平面都是不規(guī)則的,因此由于接觸面粗糙,反射的方向也會變得非常隨機(jī)。反射會改變光線的方向,但光線的強(qiáng)度保持不變。
表面越粗糙,高光范圍就越大,看起來就越暗。表面越光滑,高光就越集中,因此從某個(gè)角度看,高光會更亮、更強(qiáng)烈。請注意,兩種情況下反射的光量仍然相同。
折射會改變光線的角度,當(dāng)光線從介質(zhì) A 進(jìn)入介質(zhì) B 時(shí),其速度和方向都會發(fā)生改變。折射率(IOR)是用來描述光線折射時(shí)角度變化的光學(xué)參數(shù),用于表示光線穿過不同介質(zhì)時(shí)彎曲的程度(生活中常見的例子:吸管插入液體的折射效果)。例如,水的折射率為 1.33,而平板玻璃的折射率為 1.52。
當(dāng)光從介質(zhì)A進(jìn)入介質(zhì)B時(shí),遇到介質(zhì)B中不同的散射粒子,發(fā)生多次散射后,再次折射穿過物體,第二次折射回到原介質(zhì)的穿透點(diǎn)與第一次折射的位置大致相同。
漫反射材料通常對光的吸收性很強(qiáng)。如果光在這種材料中穿透太久,可能會被完全吸收。如果光最終穿透了材料,則意味著它只穿透了很短的距離。
因此,在漫反射材質(zhì)的渲染中,通常可以忽略光線進(jìn)入和離開點(diǎn)之間的距離。 模型(用于在著色中顯示標(biāo)準(zhǔn)漫反射的材質(zhì))不考慮表面粗糙度。其他漫反射照明模型(例如 Oren-Nayer 模型)會考慮表面粗糙度。
散射強(qiáng)、吸收低的材質(zhì)通常被認(rèn)為是中間介質(zhì)或者半透明材質(zhì)( ),比如霧、牛奶、皮膚、玉石、大理石等。在渲染后三者時(shí),通常會加入次表面散射( )光照模型來保證渲染物理屬性的準(zhǔn)確性。這種情況下,需要在計(jì)算中考慮光線的入射點(diǎn)(光線散射的距離)。在計(jì)算一些變化較大、散射和吸收率低的材質(zhì)(比如霧或煙)時(shí),可能需要使用渲染成本更高的算法,比如蒙特卡洛模擬。
微面理論
理論上,當(dāng)光線照射到不規(guī)則表面時(shí),會同時(shí)發(fā)生漫反射和鏡面反射,且與表面粗糙度有關(guān)。但在實(shí)際應(yīng)用中,由于散射發(fā)生在材料內(nèi)部,粗糙度對漫反射的視覺影響并不明顯。因此,光線第二次穿透物體的角度幾乎不受表面粗糙度和入射角的影響。最常見的漫反射照明模型——朗伯體,忽略了表面粗糙度。
在本指南中,我們將統(tǒng)一將表面不規(guī)則性( )稱為表面粗糙度( )。根據(jù) PBR 管道的不同,表面不規(guī)則性還有幾個(gè)昵稱,包括粗糙度( )、平滑度( )、光澤度( )或微面片( )。這些術(shù)語都描述了同一種屬性,即材質(zhì)表面的子紋理(Sub-texel)幾何細(xì)節(jié)。
這些表面不規(guī)則性被記錄在粗糙度圖或光澤度圖中。基于物理的雙向反射分布函數(shù)(BRDF)也是基于微面片理論,它認(rèn)為一個(gè)大的表面是由許多方向可變的小平面組成的,這些平面稱為微面片(),每個(gè)微面片基于單一的法線方向反射光線。
當(dāng)微面片的表面法線方向與光線的入射角和觀察角的半角向量方向恰好一致時(shí),該微面片就會反射可見光(在理論上的鏡面反射中,反射光要進(jìn)入觀察者的眼睛,鏡面法線向量必須與視線向量和入射向量的半角向量恰好在一條直線上。[8])。但是在某些情況下,并不是所有滿足上述條件的微面片都會起作用,因?yàn)橛行┕饩€會被投影(光線方向)或遮擋(觀察方向)所阻擋。
表面不規(guī)則性會導(dǎo)致微觀層面的光散射。模糊的反射是由光的漫反射引起的。這些光線不是平行反射回來的反射折射定律,所以我們收到的反射是模糊的。
顏色
4. 顏色
表面的可觀察顏色由光源發(fā)出的波長決定。這些波長會被物體本身吸收,也會被鏡面光或漫射光反射。吸收和散射后剩下的波長就是我們眼睛看到的顏色。
比如說,蘋果皮的大部分都會反射紅光,因?yàn)樵谔O果皮表面只有紅光的波長會被背向散射,其他光都會被吸收,所以我們看到的蘋果是紅色的。
此外,蘋果具有與光源顏色相同的非常明亮的高光,這是因?yàn)樘O果本身的材質(zhì)具有非導(dǎo)體(電介質(zhì))特性(不傳導(dǎo)光波和粒子),因此蘋果表皮上的高光反射幾乎與光的波長無關(guān)(詳情請參閱下一章)。對于這些材質(zhì),高光的顏色幾乎不受物體表面顏色的影響。
PBR 著色器通常使用 GGX 微面分布(GGX)。
雙向反射分布函數(shù)
雙向反射分布函數(shù)(BRDF, )是用來描述表面反射特性的函數(shù)。在計(jì)算機(jī)圖形學(xué)中,有各種各樣的BRDF模型,其中一些模型并不是基于真實(shí)的物理渲染。基于真實(shí)物理特性的BRDF必須遵循能量守恒定律,表現(xiàn)出互易律。互易律源于亥姆霍茲互易原理( ),也就是說,入射光和返回光可以理解為互易,這并不影響B(tài)RDF的最終推導(dǎo)結(jié)果。
PBR 使用的 BRDF 模型是基于 開發(fā)的反射模型,同時(shí)這個(gè)模型也是基于 GGX 微面片分布特性而來的。GGX 對高光反射提供了更優(yōu)的解決方案:表現(xiàn)為更窄的高光峰值點(diǎn)和更長的衰減擴(kuò)散,讓材質(zhì)的高光看起來更加真實(shí)。
5.能量守恒定律
能量守恒定律是 PBR 渲染中一個(gè)非常重要的前提。該規(guī)則規(guī)定,一個(gè)表面重新發(fā)射(反射或散射)的光必須小于該表面接收到的光。對于藝術(shù)家或設(shè)計(jì)師來說,我們不必?fù)?dān)心如何控制能量守恒定律,因?yàn)?PBR 著色器的設(shè)置一般都遵守能量守恒定律。
-F0
6. 菲涅爾效應(yīng)和 F0
作為BRDF的一個(gè)系數(shù),菲涅爾項(xiàng)在PBR著色中起著非常重要的作用。法國物理學(xué)家菲涅爾認(rèn)為,一個(gè)表面反射的光總量和觀察光的角度有關(guān)。比如你正在觀察一缸水,從正上方(垂直于水面)往下看,就能直接看到池底,因?yàn)榇藭r(shí)的觀察角度為0°,觀察向量與水面的法向量重合。當(dāng)你從更傾斜的角度觀察水面,慢慢變得與水面平行時(shí),你會看到越來越多的高光反射。
菲涅爾項(xiàng)通常不是我們在傳統(tǒng)著色器中可以控制的屬性,它只能由 PBR 著色器本身控制。當(dāng)我們從掠射角(角切角/掠射角)觀察所有光滑表面時(shí),它們幾乎會在與光的入射角成 90° 的位置形成 100% 的反射(當(dāng)我們使用菲涅爾效果時(shí),通常可以在材質(zhì)球的邊緣觀察到一圈強(qiáng)烈反射)。
對于粗糙的表面,反射會更明顯,但不會達(dá)到 100% 的鏡面反射。這種情況下反射效果受各個(gè)微面片法線與光線的夾角影響,而不是整個(gè)宏觀表面法線與光線的夾角影響。當(dāng)表面粗糙時(shí),光線會以不同的角度被微面片漫反射,因此整體反射效果看起來會更柔和。
F0:0度菲涅爾反射
當(dāng)光線垂直照射到一個(gè)平面(與法線的夾角為0度)時(shí)反射折射定律,一定比例的光線會被高光部分反射,利用折射率(IOR,Index of)來衡量,可以得到反射光的量,我們把這個(gè)值記為F0,折射進(jìn)材質(zhì)表面的光線量記為1-F0(如圖11所示)。
對于常見的非導(dǎo)電(介電)材料,其 F0 范圍在 0.02-0.05(空間)之間。對于導(dǎo)電材料,F(xiàn)0 范圍約為 0.5-1.0。表面的反射率受其折射率的影響,可以使用以下公式計(jì)算:
F0 反射率值也會影響我們該如何制作材質(zhì)貼圖。非金屬材質(zhì)(絕緣體)使用灰度來表示反射率值,而金屬材質(zhì)(導(dǎo)體)則使用 RGB 值。基于對 PBR 和藝術(shù)設(shè)計(jì)中反射的理解,我們可以推測,對于一般光滑的非導(dǎo)體(電介質(zhì))表面,F(xiàn)0 會反射 2%-5% 的光,在切線角處會反射 100% 的光。
非導(dǎo)體(電介質(zhì))表面的 F0 反射率值一般變化不大。事實(shí)上,當(dāng)我們改變表面粗糙度時(shí),反射率值的變化很難看出來。然而,不同材料之間還是存在一些差異。圖 12 顯示了金屬和非金屬表面上 F0 的范圍。需要注意的是,寶石材料可能是一個(gè)特殊情況,因?yàn)樗鼈兙哂懈叩?F0 值。
和
7. 導(dǎo)體和絕緣體 - 金屬和非金屬
當(dāng)我們?yōu)镻BR制作材料時(shí),我們應(yīng)該始終考慮材料是金屬還是非金屬,因?yàn)樗鼈兊纳a(chǎn)規(guī)格完全不同。
雖然有些類金屬材料(非金屬與金屬的混合材料)很難被明確分類,但對于大多數(shù)材料生產(chǎn)工作流程來說,提前辨別材料是否為金屬仍是一個(gè)好方法。本文將拆解金屬與非金屬的特性,并分別描述其生產(chǎn)規(guī)范。
對于導(dǎo)電的金屬材質(zhì),由于折射光被吸收,所以金屬的顏色來自于反射光。因此,貼圖中沒有給出金屬的漫反射顏色(Color)。
金屬
金屬是熱和電的優(yōu)良導(dǎo)體。導(dǎo)電金屬的電場為零,當(dāng)帶有電場和磁場的入射光波射到金屬表面時(shí),光波會被部分反射,折射的光波則全部被吸收。拋光金屬的反射率值較高,一般在70%-100%之間。
不同的金屬吸收不同波長的光,金屬的顏色/色調(diào)來自反射光,因?yàn)檎凵涔獗晃铡@纾鹞湛梢姽庾V高端的藍(lán)光,因此呈現(xiàn)黃色。
在紋理中,我們不賦予金屬漫反射顏色(Color,這也是為什么給金屬材質(zhì)添加顏色通常沒有什么效果的原因)。例如,在/工作流程中,金屬通常在Map中設(shè)置為黑色,反射值通常在通道中帶有色相的顏色值中記錄。(對于金屬材質(zhì),反射值以RGB記錄,并帶有色相。)由于我們是在PBR環(huán)境中工作,因此我們需要利用現(xiàn)實(shí)世界的規(guī)律、價(jià)值觀和方法來在紋理中還原金屬的反射。
對于金屬來說,影響材質(zhì)的另一個(gè)因素是腐蝕程度,也就是說,引起腐蝕的因素可能會對金屬的反射狀態(tài)產(chǎn)生更明顯的影響。在金屬貼圖中,被腐蝕的區(qū)域?qū)⒈粯?biāo)記為黑色,并標(biāo)識為非導(dǎo)體(電介質(zhì))材質(zhì)。/工作流著色器會將這些被腐蝕區(qū)域的 F0 值設(shè)置為統(tǒng)一的 4%。
另外,一般認(rèn)為涂漆金屬為非導(dǎo)體(電介質(zhì))材料,而油漆為覆蓋在原有金屬上的一層材料,只有未被油漆覆蓋的金屬才被定義為原有金屬,被灰塵或其他物質(zhì)覆蓋的金屬材料亦同。
正如本章開頭所提到的,在制作 PBR 材質(zhì)之前,首先要想清楚這個(gè)材質(zhì)是否是金屬。為了更加精準(zhǔn)地達(dá)到想要的效果,設(shè)計(jì)師應(yīng)該清楚金屬材質(zhì)的狀態(tài):是否被涂漆、腐蝕,或者被灰塵、油污等其他物質(zhì)覆蓋。如果材質(zhì)的某一區(qū)域的紋理顯示它不是金屬,那么這塊區(qū)域就會被著色器解釋為非導(dǎo)體(電介質(zhì))材質(zhì)。需要注意的是,腐蝕效果一般會呈現(xiàn)出金屬和非金屬之間的某種混合狀態(tài)(金屬貼圖可能會顯示不同程度的灰度)。
非金屬
非金屬(非導(dǎo)體/絕緣體/電介質(zhì),為設(shè)計(jì)師直觀理解,以下統(tǒng)稱為非導(dǎo)體)是電的不良導(dǎo)體,在材質(zhì)內(nèi)部發(fā)生折射的光線一般會被散射或同時(shí)被吸收(通常穿透物體后會折射兩次),相比于金屬,它們反射的光線較少,且具有反照率顏色(*需要注意的是,Color、Base Color 是不同工作流程中的稱呼,它們作為貼圖所攜帶的 RGB 屬性,適用原理類似,但攜帶的信息本質(zhì)上并不完全一致,廣義上包括 Base Color 和)。
之前提到過,基于折射率計(jì)算,對于常見的非導(dǎo)電(電介質(zhì))材質(zhì),F(xiàn)0 反射率大概在 2-5% 左右。這些數(shù)值轉(zhuǎn)換回線性空間大概在 0.017-0.067(40-75 sRGB)。除了一些特殊的非金屬材質(zhì)(比如寶石)外,大部分非導(dǎo)電材質(zhì)的 F0 值都不會超過 4%。
和金屬材質(zhì)一樣,對于非金屬材質(zhì),我們也需要用真實(shí)世界的測量值來繪制。然而,各種非透明材質(zhì)的折射率(IOR)很難獲得。不過,非金屬材質(zhì)的F0值變化不大,所以我們可以為反射值做一個(gè)參考尺寸(見圖15)。
空間
8.線性空間渲染
在著色器中,顏色值的提取和顏色計(jì)算操作都是在線性空間()中進(jìn)行的。這個(gè)過程首先將顏色圖中的伽馬(通常是sRGB)值轉(zhuǎn)換成。
在色彩管理的過程中,這張圖的色彩空間通常會被程序自動標(biāo)注出來,或者由工程師手動標(biāo)注出來,以便后期進(jìn)行正確的計(jì)算。所有的計(jì)算和渲染都會在線性空間中進(jìn)行,最后顯示之前再經(jīng)過伽馬校正回到sRGB,以保證色彩的正確顯示。
那么我們?nèi)绾沃滥男┵N圖會被解碼回來呢?如果設(shè)計(jì)師直接從RGB或RGB輸出紋理,我們可以看到哪些紋理包含顏色,例如金屬或玻璃色調(diào)。這些紋理在進(jìn)入著色器之前應(yīng)該標(biāo)明它們原來的顏色空間(通常是sRGB,因?yàn)樵O(shè)計(jì)師通常在這個(gè)環(huán)境中繪制紋理)。
因此PBR渲染過程中標(biāo)記為gamma-的貼圖有Base Color(基礎(chǔ)顏色/反照率顏色)、(漫反射)、(高光反射)、(輻照度貼圖)。
當(dāng)貼圖只用來記錄數(shù)據(jù)(材質(zhì)粗糙度,是否是金屬等)時(shí),通常會輸出為。在PBR渲染過程中,會將貼圖標(biāo)記為(粗糙度)、(AO)、(法線)、(金屬)、(高度)等。
我們在使用SP或者SD設(shè)計(jì)貼圖、輸出素材的時(shí)候,一般不用擔(dān)心轉(zhuǎn)換成sRGB的問題,因?yàn)檫@套輸入輸出流程已經(jīng)自動化了,所以最終渲染出來的顯示結(jié)果也是經(jīng)過gamma校正之后的正確效果。
同樣的,在使用插件中的材質(zhì)時(shí),輸出結(jié)果已經(jīng)根據(jù)貼圖的色彩空間(線性或sRGB)和所在程序的色彩管理設(shè)置自動轉(zhuǎn)換。不過需要注意的是,了解這個(gè)過程背后的原理還是很重要的,因?yàn)楫?dāng)材質(zhì)貼圖(Map)作為普通位圖()使用時(shí),你仍然需要根據(jù)你使用的渲染器手動標(biāo)注貼圖的色彩空間。一般后綴為.png、.jpg、.tga、.tif、gamma-的貼圖使用sRGB色彩空間;而后綴為.exr的貼圖(比如環(huán)境光貼圖HDRI)則使用該空間。
PBR 的關(guān)鍵
9.PBR的核心屬性
能量守恒定律:表面反射的光量小于其接收的光量。著色器會自動執(zhí)行此定律。
菲涅爾效果:產(chǎn)生菲涅爾效果的BRDF雙向反射率分布函數(shù)已被PBR 自動實(shí)現(xiàn)。對于大部分非導(dǎo)體(電介質(zhì))材質(zhì),其F0反射率值不會有太大變化,一般分布在2-5%范圍內(nèi)。對于金屬材質(zhì),反射率值較高,在70-100%之間。
鏡面反射的強(qiáng)度受多種特性的影響:BRDF 算法(GGX、Blinn 或其他)、取決于工作流程的粗糙度或光澤度圖以及 F0 的反射值。
光照計(jì)算在線性空間中進(jìn)行:所有包含顏色信息的紋理(如Base Color)通常由進(jìn)行轉(zhuǎn)換后再進(jìn)行計(jì)算。設(shè)計(jì)師或開發(fā)者需要注意在引入紋理時(shí)渲染引擎是否自動進(jìn)行了這種轉(zhuǎn)換,若沒有則需要手動標(biāo)注紋理的顏色空間。當(dāng)紋理僅用于記錄材質(zhì)的屬性值(如粗糙度、光度、高度、法線等)時(shí),應(yīng)在整個(gè)過程中將紋理解釋為空間。