ue4玻璃材质_UE4-材质
本文中,我們將首先討論基于物理的渲染,什么是材質域,什么是材質,什么是材質實例,什么是主材質,我們將討論材質的一些建議和禁忌。最后,我們將了解一些材質概念,你可以將其用于各類項目中的材質。
1.什么是PBR
PBR 表示基于物理的渲染,基于物理的渲染意味著我們根據現實模擬光線,而不是根據主觀想法模擬光線。光線的最終效果會更加準確且更加自然。使用PBR的另一個優點是基于物理渲染的材質,在所有光照場景中都能保持一致。無論材質是位于光線充足的室內還是室外,或者是水下,或者是外太空,它對光線的反應是一樣的。這意味著你不必根據項目的各種光照場景,創建多個版本的材質或紋理,這也導致了材質不必像以前那樣復雜。你可以刪除許多曾經必不可少的材質指令。此外,基于物理渲染材質中的材質參數要簡單得多,相互依賴性也沒那么高。美術師可以更直觀地調整參數。
基于物理的渲染不僅極大提升了畫面的真實度,賦予我們極為真實的圖像。它還可以用于卡通渲染。事實上,UE4的基于物理渲染系統源自于皮克斯和迪士尼的共同成果。這兩個工作室因其卡通渲染風格而聞名于世。
最后,關于PBR我想講一點,你應該使用它的原因是,它有助于你標準化美術工作管線。因為資源無論遇到何種光照情況都能做出相同反應,這是一個巨大的進步。如果你對VRay這類應用很熟悉,你會發現它與UE4中的PBR系統其實非常非常相似,所以你很快就能上手 。
2.材質域
只需改變材質域、混合模式和著色模型,你就可以變換材質來滿足各種不同需求。下圖中可以看到 材質域、混合模式和著色模型。記住,有些功能會根據 材質域、混合模式或著色模型而啟用或關閉。改變三者中的任意一個都可能會影響主著色器節點上的輸出。
“材質域(Material Domain)”決定了材質屬性的評估方式,“混合模式(Blend Mode)”決定了材質的顏色以及材質與背景,“著色模型(Shading Model)”決定了輸入將如何組合來創建材質的最終顏色。例如,如果你想實現玻璃材質,你應該將混合模式改為“透明(Transparent)”,根據你是否希望玻璃對光線做出反應,將著色模型改為“無光照(Unlit)”或“默認帶光照(Default Lit)”。不同項目中的材質會使用不同的材質域、混合模式和著色模型組合,沒有哪種組合可以滿足所有材質需求。你需要制作很多材質,每種都使用不同的組合。記住,沒有哪一種材質域、混合模式和著色模型組合,可以滿足項目的所有需要。你需要制作不同版本的材質來滿足不同的需求,另外要記住的是材質域、混合模式和著色模型不能在運行時更改,如果你覺得:“嗯,我有一個非常棒的材質,我希望在游戲啟動時把它變成玻璃材質”,這是不可能的。
3.什么是材質
材質是UE4用于表示并調整對象紋理外觀的方式,材質使用材質編輯器創建,你可以在屏幕上看到。材質實際上是由一小塊一小塊HLSL代碼構成,也就是“高級著色器語言”。這些代碼塊可以執行各種任務,比如給紋理著色或者幫助混合兩種紋理。如果你熟悉HLSL,你在材質編輯器中看到的許多功能,你都會很熟悉。因為其中許多都直接源自于HLSL函數,材質需要先編譯才能在游戲中使用或顯示。要編譯材質,你要點擊預覽窗口上方的“Apply”。你也可以保存材質,保存時材質會自動編譯。一旦材質被編譯好,它就變成靜態的了,不能在項目運行時更改。然而,我們可以使用一種材質,然后把它應用到項目中的各種不同材質上,我們稍后會介紹這點。如果你用過基于線性節點的編輯系統,UE4中的材質編輯器非常相似,所以你很快就能上手。
4.什么是材質實例
之前,我提到過運行時不能更改材質,這意味著如果要改變它的顏色或材質紋理都是不可能實現的。然而,這有點不太方便,尤其是在電子游戲這類動態場景中,這就需要用到“材質實例”了。材質實例是材質的特殊版本,允許我們在運行時修改材質中的參數和紋理,而不必重新編譯材質。這使得材質實例的迭代變得非常快,所以你幾乎可以實時看到變化效果。你還可以通過時間軸和藍圖與材質實例進行交互,從而獲得大量非常酷炫的動畫效果。
當你使用一個材質實例時,使用它們的性能優勢很有限。然而,當你使用成千上百的材質實例而不是材質時,性能優勢就會顯現。使用材質實例的主要優點是靈活性,它們允許美術師參與你的項目。你可以設置一個主材質,然后在材質實例中設置許多參數,以便美術師根據喜好調整材質,而無需編寫大量復雜的著色器代碼。
5.什么是主材質
我之前介紹過主材質和材質實例,但讓我們真正深入了解一下什么是主材質。主材質是一種用來完成許多任務的材質,下圖是一個主材質實例。
你可以使用許多參數節點,比如矢量參數,叫做“Base_Color”,它的功能是允許我們在材質實例中,使用取色器將材質設置成任意顏色。
另一種參數節點是紋理參數節點,它的作用是允許我們在材質實例中添加任意紋理,以便讓材質擁有全新外觀。
此外還有標量參數,標量參數控制標量變量,這類參數節點允許你更改材質實例中的參數數值,以便你增加或減少材質實例的某種效果。
如果你想在材質實例中找到可以調整的節點,你要找的就是材質參數節點,有很多種方法可以添加材質參數節點,甚至將現有節點轉換為材質參數節點,稍后我們將了解。 現在,你只需知道主材質可以在項目中滿足對象的不同材質需求。
6.有關主材質的注意事項
請使用多種主材質, 不要嘗試將一種主材質用于所有對象,這是不可能的,會讓材質臃腫不堪,最終導致性能問題。你應該做的是,所有不透明場景對象使用一種材質,然后半透明對象使用另一種材質,角色使用一種主材質,武器使用另一種主材質。不要試圖用一種主材質滿足游戲中的所有需求,這是不可能的。
最后,當你創建主材質時,不要自作主張替美術師做出決定,和他們面對面交流,了解哪些參數他們最常用,然后將它們添加到主材質中。這樣美術師只需調整最有用也最常用的參數。這樣,你就可以省去維護不必要著色器代碼的麻煩,避免材質變得臃腫不堪,這么做還有助于開發人員了解材質中的邏輯。如果許多代碼沒人使用,那么為什么還要用它們呢?
7.“主材質”的概念
當你創建主材質時,有幾點事項有助于你極大提升材質的性能,并且適用于所有目標平臺。
首先要介紹的是材質函數,材質函數允許你共享并且復用材質圖表的部分內存。UE4實際上自帶了許多材質函數,功能齊全,包括確定場景對象的位置以及確定鼠標當前在屏幕中的坐標。你可能已經用多了許多自帶的材質函數,只不過你沒意識到。我之所以介紹它,原因是如果你需要創建或復用某一組代碼,比如調整紋理在X軸和Y軸上的平鋪效果,你會發現可以方便地將代碼封裝成材質函數,然后通過材質庫分享代碼。這樣一旦需要調整平鋪效果,你只需調整材質函數而不必打開所有材質然后親自調整平鋪效果。材質函數允許你共享材質代碼,從而在你調整全局效果時,減少維護代碼的麻煩。
接下來要說的是RGB遮罩打包,當你創建主材質時,你可以描述紋理的使用方式,讓美術師將不同的紋理保存在同一張紋理的紅、綠、藍通道中,能夠有效減少內容中的紋理占用量。然而,當你在使用RGB遮罩打包時,請確保注明紅、綠、藍通道中各自保存的紋理類型,并在項目整個生命周期長恪守該規范。
接下來要說的是靜態開關,靜態開關允許你啟用或禁用材質中的整條代碼路徑。例如,你可以使用靜態開關啟用視差法線貼圖,它能夠讓你的法線貼圖看起來很有立體感,不過它的開銷很大,所以不要在場景中將其頻繁用于材質。通過將功能放置在靜態開關內,你可以控制哪些材質會啟用或禁用功能,以便美術師將這類功能添加到真正需要它的網格體上。
最后要討論的特性是特性層級開關,特性層級開關能讓材質在任何目標設備上運行,你要做的是將不同版本不同復雜度的材質輸出到不同平臺中。例如,如果我要使用 Shader Model 5(SM5) 就能獲得最高程度的細節和精細度,它是細節最豐富的著色器。而使用ES2模型的材質,通常用于移動平臺,它們的實際效果無法提供大量精美細節。ES2中的材質遠沒有SM5中的材質顯得復雜。同樣,這個特性允許你將一個材質用于項目的所有的目標發布平臺。
總結
以上是生活随笔為你收集整理的ue4玻璃材质_UE4-材质的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql随机选择记录表_Mysql表中
- 下一篇: linux 常用参数,Linux 常用命