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