Unreal Engine 4:Kajiya-Kay Shading在UE4中的實(shí)現(xiàn)
來源:
52vr |
責(zé)任編輯:傳說的落葉 |
發(fā)布時(shí)間: 2019-06-18 09:35 | 瀏覽量:
在之前的文章Technical Artist的不歸路 —— Kajiya-Kay Shading 中大致過了一遍Kajiya-Kay Shading的原理,而本篇文章則著重于在虛幻4中進(jìn)行該著色模型的實(shí)現(xiàn)。
在那篇文章中,由于Shader代碼已經(jīng)有了,那么問題也就僅僅存在于在UE4中材質(zhì)編輯器的實(shí)現(xiàn)。
先上效果圖:
基本函數(shù)
在這篇博客的實(shí)現(xiàn)中,光照都在切線空間(Tangent Space)中進(jìn)行計(jì)算。在UE4的材質(zhì)編輯器中,使用TransformVector節(jié)點(diǎn)來進(jìn)行空間的轉(zhuǎn)換。
Tangent Vector
由于Kajiya-Kay著色模型主要使用的是切線向量,因此需要計(jì)算出對(duì)應(yīng)的切線向量。在切線空間中,將N向量與(1.0, 0.0, 0.0)進(jìn)行叉乘來計(jì)算出切線向量。
ShiftTangent函數(shù)
有了Shader代碼,ShiftTangent函數(shù)很好構(gòu)建,我在這里將其封裝為Material Function進(jìn)行調(diào)用:
StrandSpecular函數(shù)
同樣的,StrandSpec函數(shù)也很好構(gòu)建:
光照計(jì)算
Light Vector
由于UE4使用的是Defferred Shading,而Kajiya-Kay Shading使用的是Foward Shading,為了在材質(zhì)編輯器中實(shí)現(xiàn)這個(gè)效果,需要做一些額外的配置。
首先是LightVector的構(gòu)建,在UE4中可以使用Material Parameter Collection來進(jìn)行變量的設(shè)置。我在這里建立了一個(gè)Material Parameter Collection,并且在其中設(shè)置了對(duì)應(yīng)的向量參數(shù):
此外,我創(chuàng)建了一個(gè)Blueprint用于動(dòng)態(tài)設(shè)定這個(gè)值,通過SetVectorParameterValue函數(shù)進(jìn)行設(shè)定。
通過這樣的設(shè)定,需要在將這個(gè)Actor拖入Level,并且設(shè)定高光對(duì)應(yīng)的光源Actor。那么就可以在材質(zhì)編輯器中使用如下方式獲得LightVector:
那么這樣子就只需要按照Shader寫的來連即可。
以下是該材質(zhì)的圖片形式:
-
分享到:
相關(guān)文章
網(wǎng)友評(píng)論
您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)
關(guān)閉
- 用戶名:
- 密 碼:
- 驗(yàn)證碼: 看不清? 點(diǎn)擊更換
- 忘記密碼?
全部評(píng)論:0條
推薦
熱門