20.高級(jí)細(xì)節(jié)法線著色器

目的
不同的材質(zhì)質(zhì)感增加不同的細(xì)節(jié)法線
制作過(guò)程
思路
假如給角色增加細(xì)節(jié)法線貼圖,就不能和石頭一樣,
因?yàn)槭^都是一種材質(zhì),角色有皮革,布料,金屬等不同材質(zhì)質(zhì)感。
上一篇是只能增加一種細(xì)節(jié)法線,只有石頭的細(xì)節(jié)法線
錯(cuò)誤的方法
我們?nèi)?chuàng)建四種不同的法線貼圖
錯(cuò)誤的處理方式

這里正常是8,這里為了看清楚設(shè)置的是1
介紹這些節(jié)點(diǎn)的功能,

遮罩的功能就是繪制貼圖顯示的位置
目前這樣的方法有問(wèn)題,
比如我們使用8種材質(zhì),那我們需要導(dǎo)入8張法線貼圖。我們貼圖越多,著色器就越費(fèi)。
查看我們的著色器有多費(fèi)

這表示有164個(gè)指令。
這里表示6個(gè)貼圖

這樣錯(cuò)誤的方法是比較費(fèi)。
正確的方法
貼圖矩陣
第一個(gè)概念使用貼圖矩陣,就是一堆貼圖,也可以理解成圖集。
制作貼圖矩陣
創(chuàng)建一個(gè)紋理2D數(shù)組

創(chuàng)建出來(lái)是空的

我們需要增加貼圖—?jiǎng)?chuàng)建4個(gè)貼圖

效果

具體在材質(zhì)中我們?cè)趺词褂眠@些紋理,我們需要?jiǎng)?chuàng)建一個(gè)材質(zhì)矩陣,創(chuàng)建16個(gè)這種材質(zhì)。
這個(gè)材質(zhì)矩陣就可以給所有角色使用。
注意:使用細(xì)節(jié)法線的時(shí)候我們貼圖大小不能太大,推薦使用256
調(diào)用材質(zhì)矩陣
我們目前創(chuàng)建完成,在材質(zhì)編輯器怎么調(diào)用
創(chuàng)建一個(gè)空的貼圖節(jié)點(diǎn)—現(xiàn)在我們剛剛創(chuàng)建的材質(zhì)矩陣

這里就采樣了
在材質(zhì)里怎么使用貼圖圖集,一個(gè)是UV,類(lèi)似序列幀貼圖

需要輸入 UV 還有一個(gè)W就是第幾張。
這是顯示第0張貼圖

遮罩貼圖我們使用灰度來(lái)制作,
問(wèn)題 為什么不使用RGB來(lái)制作通道了?
因?yàn)槲覀兪褂脠D集可能使用16張貼圖,使用RGBA4個(gè)通道不夠了,我們使用不同的灰度來(lái)制作Mask

我們以這樣的方式可以取出很多,這里我們是使用4張貼圖,就平均使用4個(gè)灰度。

按照 當(dāng)前的色階制作遮罩圖

不同的色階顯示不同的材質(zhì),
導(dǎo)入貼圖設(shè)置

為什么我們需要設(shè)置貼圖,這是因?yàn)槲覀兪褂觅N圖來(lái)計(jì)算需要把貼圖設(shè)置成線性。
不同灰度決定不同的材質(zhì)
回到UE5材質(zhì)編輯器,我們?cè)趺词褂肕ask貼圖

我們現(xiàn)在看到我們是有4個(gè)不同的灰度。
我們知道顏色范圍是 0- 1 ,我們需要把這個(gè)灰度的值映射到 0 -3 我們有4張貼圖
0-1映射到 0-3

我們需要不同灰度代表一個(gè)整數(shù),我們這里增加一個(gè)Round節(jié)點(diǎn)

這樣我們的輸入的灰度顏色就會(huì)四舍五入取整
擴(kuò)展 Round節(jié)點(diǎn)的使用
取整

輸出

檢查一下是否輸出的是4塊顏色信息。
輸出到貼圖通道

總結(jié)
紋理2D數(shù)組的使用,可以儲(chǔ)存多張紋理,

貼圖的不同模式,比如默認(rèn)的Default 在材質(zhì)對(duì)應(yīng)的使用Color
注意:這里如果設(shè)置的不對(duì)可能導(dǎo)致崩潰
Default

Normal

Masks

注意:這里如果設(shè)置的不對(duì)可能導(dǎo)致崩潰