有些效果但是用一般的特效或是Shader很難製作,甚至需要程式的協助
有些效果如果要綁骨架或適用特效來處理的話,會很耗費工時且效果不見得好
通常來講在不懂shader的狀況,一個效果可以效能不行的shader,會直接被捨棄,替換成效果不行效能可以的Shader,但其實只要理解shader就有辦法做效能的優化,
像右圖來講就是典型sampline太多而造成過多的開銷
PBR是基於物理規則的渲染模式,現今已經廣泛應用在電影、特效、遊戲內。
在傳統得渲染模式下,只有使用specular當作反光貼圖,但是卻很難去模擬真實的漫射與反射,
所以PBR最大的特點就在於多了兩張貼圖,Metallic 跟 Roughness ,金屬鍍與粗糙度。
用以模擬物件的真實光影變化
用以表示電介質/導體的資訊,導體在視覺上通常擁有較強烈的反射與Fresnel(邊緣反射高光)。可以簡單的理解為用以表達材質接近金屬的程度。
由於物體的不完美性,表面大多含有許多凹凸不平的細節,這會使得光線漫反射而使成像變得模糊,而越為光滑的表面,所產生的反射成像則越為清晰。
Roughness貼圖,正是用以表現物體在UV貼圖各個不同部位、材質的漫反射程度。
在使用PBR有時候會發現,各個通道或是採用的貼圖名稱都不太一樣,
其為兩種派系名稱,Metal/Roughness和Specular/Glossiness
針對顏色貼圖也有三種說法Base Color、Albedo、Diffuse
其實這些名詞在廣義的定一下都是相同的意思,但仔細分析還是有一點差別的
Roughness /Metallic /Base Color(Albedo)
Base Color(Albedo):
必須排除材質上的光線資訊
暗色的 RGB 數值應介於30~50之間(需嚴格限制)
亮色的 RGB 數值不應高於 240
Roughness :描述對象的微表面。白色1.0粗糙,黑色0.0光滑
Metallic: 原始金屬= 1.0白色,非金屬= 0.0黑色。可能存在過渡的灰度值,表明存在覆蓋原始金屬的東西,例如污垢。 最低反射率固定在4%
Glossiness /Specular /Diffuse
Diffuse:
顏色反映材質本身的顏色,但金屬區域必須為黑色
必須排除材質上的光線資訊
暗色的 RGB 數值應該介於30~50之間(需嚴格限制),金屬區域必須完全是黑色。
亮色的 RGB 數值不能高於 240
Glossiness : 描述對象的微表面。白色1.0平滑,而0.0黑色則粗糙
Specular:
Specular 貼圖可以自由定義非金屬材質的(F0)強度,不像 Metallic/Roughness 流程裡所有非金屬材質都是強制在 4% 反射率。
Specular map 包含非金屬的(F0)資訊和金屬的反射強度。
非金屬的光源反射遠比金屬弱很多,通常只有 2~5%(40~75 sRGB )。
一般寶石類的(F0)是 0.05~0.17 (linear)
一般流體類的(F0)是 0.02~0.04 (linear)
金屬的反射強度是 70~100%(180-255 sRGB)
如果你不知道材質的反射強度,那就用 0.04(塑膠)吧!
uv座標對應的就是座標軸上的位置和座標,而map指的就是我們的貼圖,正常情況下map和uv是對應的1比1的關係,將3D模型拆開攤平在一個二維的平面上,就是俗稱的拆UV,之後再將貼圖透過投影的方式映照在模型上就是上材質的步驟
※UVW 其實等於 XYZ
以節點來看的話就會像是右圖這樣
UV拆開成U跟V就會是兩張0到255的黑白貼圖
Shader是甚麼
Shader就是基於各種渲染模式下,所對應的功能接口
你可以在這個shader內定義你想要的計算,然後把效果接到對應的接口上,就能呈現出對應的效果。
(感覺有說跟沒說一樣)