UNITY渲染基礎
渲染
1.何為渲染?
所有我們能看到的東西都是需要進行渲染的。
比如:天空盒,場景模型,角色模型,特效......
如果沒有渲染,游戲世界將是一片黑暗。
2.各版本渲染區別
Unity4.X:渲染使用的事AutoDesk的Beast技術;
Unity5.X:渲染使用的事Enlighten引擎;
Unity5.6后:渲染使用的還是Enlighten引擎,但是有了升級;
3.移動端渲染
移動端的模型大多是使用兩張類型的貼圖作為渲染的素材:
一張是漫反射貼圖,一張是法線貼圖。
4.PC主機端渲染
PC主機端(國外的大型單機游戲)大多是真實的模擬現實中的效果來進行渲染的,使用了很多種類型的貼圖(Unity的標准着色器中有支持10種貼圖類型)。
PBR:基於物理規則的渲染方式。
GI:全局光照,用於模擬光的互動和反彈等復雜行為的算法。
核心要點
1.標准着色器
Unity5.X 后提供了兩個標准着色器(Shader)。
使用這兩個Shader我們可以實現大部分物體的渲染。
2.Lighting面板
主要對場景中的燈光渲染進行統一的設置。
場景燈光分:實時和烘焙。
3.反射探頭
主要用於實現模型的反射。
4.燈光探頭組
主要用於在烘焙后的場景中模型實時光的效果。
Shader
1.Shader的重要性
shader好比是畫家手中的畫筆和顏料。如果畫家沒有了這兩樣東西后,根本就沒辦法畫出好的作品。
在 Unity 中所有看到的一切,都離不開 Shader 的渲染,無論是天空盒,場景,角色模型,特效。。。。。這些我們之所以能在游戲中看到它們,它們能顯示出一個五彩繽紛的虛擬世界,其中都是 Shader 在起作用。
2.Shader的學習步驟
- Unity 內置 Shader 的使用;
- 3D 數學基礎學習;
- 渲染管線的渲染步驟;
- 在 Unity 內開發滿足自己需求的 Shader。
天空盒與內置Shader介紹
1.顏色空間
兩種顏色空間:
Gamma 空間:移動端,頁游,HoloLens,性能比較低的硬件設備。
Linear 空間:PC 端,主機端。
Unity 默認的顏色空間(Color Space)設置選項是選擇為 Gamma,但是如
果我們使用 PBR 渲染流程(標准着色器)就必須將顏色空間修改為 Linear。
修改顏色空間
Edit --> Project Settings --> Player
--> Other Settings -->Rendering -->
Color Space --> Linear
2.天空盒
天空盒的作用
- 用於渲染顯示天空和周圍的環境;
- 作為場景中的輔助光源;
制作天空盒
- 導入“HDR 環境貼圖”素材圖片;
- 將 HDR 貼圖的“Texture Shape”修改為 Cube;
- 創建一個材質球,材質球選擇 Shader 為 Skybox/Cubemap;
- 將貼圖素材賦予給材質球。
使用天空盒
- Lighting 面板上的 Skybox 選項設置要使用的天空盒。
- 直接將天空盒拖拽到場景中。
天空盒材質參數調整
- Exposure:調整貼圖的亮度。
- Rotation:旋轉貼圖,很多時候貼圖上有太陽,我們可以通過旋轉讓貼圖上的太陽和場景里面的方向光重疊。
內置 Shader
Unity 中內置的 Shader 分可以分為三組,他們具備不同的作用和使用場合:
1.Unity5.x 新 Shader
2.Unity5.x 標准 Shader(用於 PBR 渲染)
3.Unity4.x 舊版 Shader(用於支持舊版項目的渲染)
標准Shader之四大渲染模式
1.四大渲染模式
1.Opaque(不透明)
作用:用於渲染所有不透明的物體,這類物體在場景中是最多的。60%的比例。
2.Cutout(鏤空)
作用:用於渲染有鏤空的物體,這類物體在場景中並不太多。5%的比例。
3.Fade(隱現)
作用:用於渲染實現物體的漸隱和漸現。這類物體在場景中也不多。5%的比例。
4.Transparent(透明)
作用:用於渲染有透明效果的物體,這類物體在場景中也比較多。30%的比例。
2.標准 Shader 功能布局
1.渲染模式區域
當創建完一個材質球,並設置 Shader 為標准着色器后,第一步就需要根據這個材質球要渲染的物體的特性(不透明物體,透明物體)設置不同的渲染模式。
2.主貼圖區域
用於設置 Shader 的主要貼圖,使用這個區域的貼圖和設置項控制模型最終的渲染效果。80%的模型,我們只需要設置這個位置的貼圖就夠用了。
3.次貼圖區域
用於設置 Shader 的次要貼圖,用於給模型增加細節。一般不會用到這個位置的設置項。但是一些需要近距離觀察的模型,設置完上方的主貼圖,再設置下方的次要貼圖,能增加模型的精致度。
標准Shader之十種貼圖類型
1.標准 Shader 誕生
1.背景了解
- Unity4.x 階段,Unity 老被拿來和 UrealEngine(虛幻)進行對比,得到的結論就是 Unity 是“渣畫質”,Ureal 是“高大上”。但是相對而言 Unity易於學習,開發速度快,跨平台多,就業崗位多,卻也是 Ureal 比不了的。
- Unity4.x 階段的畫面渲染使用的是 AutoDesk 的 Beast 技術;Unity5.x階段徹底放棄了 Beast 技術,改為使用和 UrealEngine 一樣的一款第三方渲染引擎 Enlighten 來進行畫面渲染。
- Unity 為了配合這個新的渲染引擎,推出了“標准 Shader”。
- 理論上,我們可以使用 Unity5 制作出和 UrealEngine 差不多的畫面效果。
2.標准 Shader 的優點
使用一個 Shader 完成大部分場景模型的渲染;無論是人物角色,金屬,塑料,皮革,布料,玻璃,建築......都可以使用一個標准 Shader 來完成渲染。
3.標准 Shader 貼圖
標准 Shader 使用的是 PBR 渲染,基於現實物理效果的渲染表現形式。一個模型能不能使用標准 Shader 來進行渲染,是在做這個模型的貼圖的時候決定的。有沒有按照 PBR 貼圖的制作規范和模式來制作,決定了該模型是否可以使用標准 Shader 渲染。
2.常用貼圖介紹
1.兩種標准 Shader
Unity5.x 中的標准 Shader 有兩個:
Standard:標准着色器
Standard(Specular setup):標准着色器(鏡面)
2.Albedo 貼圖
Albedo:反照率[貼圖];用於體現模型的紋理,顏色。
反照率貼圖本身是一張顏色與紋理的貼圖。
該選項有貼圖屬性,也有顏色屬性。
兩個屬性可以單獨使用,也可以組合使用;
當顏色屬性為純白色時,則不影響貼圖的效果;
當顏色屬性為其他顏色時,則疊加貼圖效果。
3.Metallic 貼圖
金屬度[貼圖];用於體現模型的金屬高光反射;
金屬度貼圖本身是一張灰白圖,越白的地方,金屬度越強烈,越黑的地方金屬度越低。
Smoothness:平滑度
介於 0 和 1 之間的一個值,越小,平滑度越低,越大,平滑度越高。
4.Normal Map 貼圖
Normal Map:法線貼圖;用於增加模型的細節;
法線貼圖本身是一張藍色的凹凸圖。
5.Occlusion 貼圖
Occlusion:AO 貼圖;
AO 貼圖本身是一張灰白圖。
主要用於改善陰影,給場景(模型)更多的深度,有助於更好的表現模型的細節。
6.Specular
Specular:鏡面[貼圖],類似於“Metallic 金屬度”貼圖。
PBR 貼圖的制作方式不同,最終關於“金屬部分”的表現,出現了兩種類型的貼圖,Metallic 和 Specular。
7.Detail Albedo x2
Detail Albedo x2:細節反照率[貼圖];
作用是對主 Albedo 貼圖的一個細節深入表現;
8.Normal Map x2
Normal Map x2:細節法線[貼圖];
作用是對主 Normal Map 貼圖的一個細節深入表現;
9.Detail Mask
Detail Mask:細節遮罩[貼圖];
這個貼圖是配合“次貼圖區域”中的 Detail Albedo,Normal Map 兩張貼圖配合使用的,次貼圖區域中的這兩張很多是平鋪的貼圖,效果會作用於模型的全部,我們使用 Detail Mask 將一些不需要被“次貼圖”影響的部分獨立出來。
10.Emission貼圖
Emission:自發光[貼圖],讓模型自發光;
Unity里面能夠作為光源存在的除了燈光組件和天空盒,標准Shader里面的Emission貼圖也是可以作為一種光源的。
11.Height Map貼圖
Height Map:視差[貼圖],比Normal Map更有立體感的一種貼圖方式;
主要用於地面,建築等效果的體現。
PBR效果
- 3dMax/Maya制作模型白模
- Substance Painter制作PBR貼圖
- Unity5.X進行合成使用
PBR質感表現之金屬材質
1.金屬度的重要性
在 Unity5.x 中,金屬度是相對而言是最關鍵的一個可調整參數。
我們在 Unity 中模擬現實生活中的東西,很多時候都需要控制它們的金屬度。
2.代碼修改 Shader 參數
1.Shader 源代碼下載
Unity 每次版本更新的時候,不單單會更新 Unity,配套的資源也是會一塊更新的,比如版本配套的 Shader 源代碼。[見圖]
2.相關 API
獲取 Shader 中參數的值:
material.GetFloat(" 參數名 "); //獲取小數類型值
material.GetColor(“參數名”); //獲取顏色類型值;
material.GetTexture(“參數名”); //獲取貼圖類型值;
修改 Shadder 中參數的值:
material.SetFloat(“參數名”,值); //設置小數類型值;
material.SetColor(“參數名”,顏色值); //設置顏色類型值; material.SetTexture(“參數名”,貼圖); //設置貼圖類型值;
2.金屬度總結
1.兩個參數
Metallic 有兩個參數,貼圖和滑塊條,滑塊條控制的參數是 0~1。
金屬度貼圖是一張黑白圖,就是用這些黑到白的顏色,存儲 0~1 相關的信息值。
滑塊條是調整的整體,調整的時候,整個模型都是統一的一種效果;
貼圖則可以分區域控制金屬度的高與低,使得模型金屬效果更有層次。
PBR 質感表現之玻璃質感
兩個參數
Albedo 有兩個參數,貼圖和顏色面板,顏色面板里面的 Alpha 通道是 0~255。
Albedo 貼圖是一張純色紋理圖,貼圖是可以存 Alpha 通道的。
顏色面板里面的 Alpha 通道,調整的時候,整個模型都是統一的一種效果;
貼圖則可以分區域控制透明度的高與低,使得模型透明效果更有層次。
畫面增強之后期屏幕渲染特效
1.后期屏幕渲染特效
1.概念介紹
后期屏幕渲染特效,也叫做攝像機特效。
后期屏幕渲染特效是我們游戲畫面后期處理時使用的特效,是作用於游戲場景中的攝像機游戲物體上的。
比如現實生活中攝影師拍照:
①人物角色的化妝就好比我們在 Unity 中用 Shader 材質球美化模型;
②拍照時各種輔助的燈光好比 Unity 中的燈光系統,營造氛圍;
③拍照完畢后,后期還需要用 PS 制作修改一些地方,這一步的操作,在我們的游戲開發過程中對應的就是“后期屏幕渲染特效”。
2.ImageEffects
1.ImageEffects 介紹
ImageEffects 是 Unity 中附帶的資源包之一,資源包存放了大量的攝像機特效,攝像機特效相關的腳本只能掛載到攝像機上進行使用。
資源包導入步驟如下:
Project 面板右鍵-->Import Package-->Effects
2.注意事項
①攝像機特效資源包導入后,Component 最后一項會出現“Image Effects”選項,通過這個菜單,可以給選中的攝像機游戲物體添加相應的特效。
②這個攝像機特效資源包中所有的特效,分成九大類[見圖],30 多個特效腳本。
③攝像機特效是允許效果疊加的,也就是說我們可以在攝像機上合理的組合使用多個后期屏幕渲染特效。
④另外 Unity 的資源商店里也有大量的第三方后期屏幕渲染特效資源。
3.場景美化案例
1.Antialiasing[抗鋸齒特效]
位置:Image Effects --> Other --> Antialiasing
電腦顯卡渲染出來的 3D 模型物體,物體的邊緣會出現鋸齒,影響視覺體驗。可以使用“抗鋸齒特效”平衡這些鋸齒。
Technique:抗鋸齒算法,這里有七種類型的算法可供選擇使用。
2.Bloom[泛光特效]
位置:Image Effects --> Bloom and Glow --> Bloom
泛光是一種增強版輝光,光暈效果。
Mode:模式,基礎模式和復雜模式。
Threshold:閾值,控制泛光的范圍。
3.Screen Space Ambient Obscurance[屏幕空間環境 AO 效果]
位置:Image Effects --> Rendering --> Screen Space AO
可以實時模擬場景中的環境遮擋效果。
4.Noise And Scratches[噪音和划痕特效]
位置:Image Effects --> Noise --> Noise and Scratches
給場景效果添加噪點和划痕,可以用於模擬老電影的畫面效果。
Unity5.6.0 新版渲染功能介紹
1.標准 Shader 更新
1.Emission 參數
5.5.1 版:Emission 貼圖的的屬性功能是直接展現在面板上的;
5.6.0 版:Emission 貼圖需要勾選“復選框”才可以展現相關屬性。
2.Advanced Options 區域
5.6.0 比 5.5.1 新增了一個 Advanced Options(高級選項)區域。
2.Lighting 面板更新
1.版本更新對比
環境光區域:新版和舊版是一致的,未發生改變。
實時渲染區域:舊版有渲染分辨率和 CPU 使用量的參數,新版本去掉了這兩個參數。
烘焙渲染區域:新版本將烘焙(光照貼圖方式)的的參數單獨提取成了一個新的區域,Lightmapping Settings。整體參數和舊版幾乎一致。
3.Light Explorer 新功能
1.Light Explorer [燈光管理器]
給場景中的燈光,反射探頭,燈光探頭組,靜態自發光物體提供了一個統一的控制和管理的面板。

本作品由繁星隕辰采用知識共享署名-非商業性使用 4.0 國際許可協議進行許可。
