MMD聯(lián)動(dòng)Unity學(xué)習(xí)筆記 Vol.50 Unity Shader Graph 節(jié)點(diǎn)解析 屏幕位置節(jié)點(diǎn)

前言 ???? ????
????這期我們還是跟著官方的視頻學(xué)習(xí)Unity里關(guān)于Shader Graph的內(nèi)容,這期是這個(gè)系列的第
六期,Unity Shader Graph 節(jié)點(diǎn)解析(六)Screen Position, View Direction



????這一期的內(nèi)容是ScreenPosition(屏幕位置節(jié)點(diǎn))和ViewDirection(視角方向節(jié)點(diǎn))

????????在第四期中我們講到頂點(diǎn)在坐標(biāo)空間內(nèi)的變換規(guī)則,我們知道最后一步就是把頂點(diǎn)從ClipSpace(裁剪空間)投射到ScreenSpace(屏幕空間)的過(guò)程,本期內(nèi)容中的屏幕位置節(jié)點(diǎn),就是經(jīng)過(guò)投射矩陣轉(zhuǎn)換后的坐標(biāo)向量。

????????ShaderGraph提供四種模式的屏幕位置節(jié)點(diǎn),Center和Tiled模式,可以理解為在Default的基礎(chǔ)上,進(jìn)行偏移或是重復(fù)的特殊計(jì)算,因此下面就只對(duì)Default和Raw模式的用法舉例說(shuō)明。

????Default模式ScreenPosition節(jié)點(diǎn)返回默認(rèn)的屏幕坐標(biāo),當(dāng)把這個(gè)數(shù)據(jù)輸入到采樣貼圖的UV接口時(shí),我們會(huì)發(fā)現(xiàn)默認(rèn)方式是根據(jù)自身UV進(jìn)行Mapping,而采樣屏幕UV的貼圖會(huì)跟當(dāng)前屏幕空間平行。


????

????Raw模式的屏幕位置,適用于參與各種計(jì)算,比如使用它來(lái)獲得場(chǎng)景中的深度信息。

????把剛才的計(jì)算值輸出到顏色中,可以看到隨著物體的距離不同,輸出的深度信息也就不一樣。

????????視角方向,顧名思義就是返回模型中頂點(diǎn)位置到攝像機(jī)的觀察方向,所以我們可以使用相機(jī)的坐標(biāo)向量減去物體的坐標(biāo)向量,就得到當(dāng)前的觀察方向。

????在計(jì)算物體的反射時(shí),會(huì)使用視角方向ViewDirection進(jìn)行計(jì)算。有時(shí)候我們也引用到一個(gè)新的Half向量來(lái)計(jì)算高光,它是通過(guò)對(duì)視角方向和光照方向的均值歸一化后得到的向量。

????????有了ViewDirection節(jié)點(diǎn),我們可以實(shí)現(xiàn)各種各樣自己想要的高光,比如海洋高光,風(fēng)格化高光等等。

????????根據(jù)使用高光算法的不同,實(shí)現(xiàn)的效果也不一樣,圖中所示的,就是其中一種高光算法。

????????還有我們常見(jiàn)的菲涅爾效果作用到ViewDirection進(jìn)行計(jì)算,因此,計(jì)算出來(lái)的邊緣光會(huì)永遠(yuǎn)朝向當(dāng)前的視角方向。