虛幻中的材質系統集合了節點程式碼生成,shader引數繫結及設定,渲染狀態管理等多種功能。UDK中使用的是2個資源型別Material和MaterialInstance,他們都可以賦予任何物件。但同時,他們的用途也是有區別的

Material更接近於傳統我們見過的材質,可以使用MaterialEditor進行節點編輯生成一種材質,設定各種引數,直接在編輯器中繫結使用的紋理,並將Material賦予物件

MaterialInstance的原理有點類似於C++的虛表,這點可以從材質例項編輯器中看得出來

image

當前的既是MaterialInstance,其父就是Material,這種層次可以是多層的

Material在新增節點時有一種帶有Parameter的節點例如

TextureSample是普通的材質取樣器

TextureSampleParameter2D就是可以共享出來給外部設定的引數,換句話說,就是這個取樣器可以在後期修改。

MaterialInstance就是可以修改這些Parameter。

通過這種結構的設定,我們就可以輕易的使用1種樣式的材質效果,通過更換區域性效果圖片,變換組合出更多的效果。