熱門
Unity2021.2版本著色器圖形新功能概覽
隨著Unity 2021.2的發(fā)布,,Unity在Shader Graph中引入了一些令人興奮的新功能,,例如通用渲染管道(URP))中的表面選項支持、自定義插值器和Blackboard分類等,,這些功能大大提高了藝術家工作流和著色器性能,。
在本篇文章中,將使用之前由Unity發(fā)布的維京村項目來向大家逐一介紹這些全新添加的功能,,并指導大家利用這些新的著色器圖形功能重新創(chuàng)建項目中使用的一些著色器,。廢話不多說讓我們開始吧!
維京村資產(chǎn)包
維京村演示項目時候使用Unity的2021.2 beta 7版本和URP模板創(chuàng)建的一個新的URP項目,。當你有新的相似項目時,,就可以直接下載并導入維京村URP包。下面讓我門來看看在維京村演示中究竟使用了什么新功能,。
URP表面選項
我們使用的第一個功能是對URP表面選項的支持功能,。該功能允許我們將“光照”或“未光照著色器圖形”著色器的“表面選項”屬性傳遞給材質(zhì)檢查器。通過啟用“允許材質(zhì)覆蓋”選項,,我們可以在材質(zhì)檢查器級別中選擇常用屬性,,如“表面類型”、“Alpha剪輯”或“陰影”,。下面讓我們仔細看看在示例項目中的這個選項的作用,。
維京村URP資產(chǎn)包包含許多不同的材料。在多種情況下,,材質(zhì)具有不同的表面選項設置,。但是,,在材質(zhì)中使用的著色器沒有很大的區(qū)別。圖形檢查器上的新選項“允許材質(zhì)覆蓋”可以讓我們覆蓋每個材質(zhì)著色器圖形中的“表面選項”,,因此,,我們可以基于單個著色器圖形資源創(chuàng)建具有不同設置的材質(zhì)。
我們來看一些例子,。在項目中啟用Mat_fence_02.mat,、standard.shadergraph和Mat_strawroof_01.mat,standard.shadergraph是Alpha剪輯啟用的版本,。在圖形檢查器中啟用“允許材質(zhì)覆蓋”選項后,,通過相同的著色器,我可以使用Alpha剪輯控制材質(zhì)級別以此獲得不同的材質(zhì)變體,。
啟用“允許材質(zhì)覆蓋”選項后,,我們還可以在材質(zhì)檢查器的“金屬粗糙度”工作流和“鏡面光澤度”工作流之間輕松切換。
以此項目中的Lit_SSS_Cutout.shadergraph為例,。該著色器用于項目中的不同植被材質(zhì),,默認情況下設置為“金屬”工作流。如果我們只想使用著色器將一個特定的材質(zhì)轉換為鏡面工作流,,啟用“允許材質(zhì)覆蓋”選項后,,我們可以覆蓋材質(zhì)檢查器上的設置,同時不接觸正在使用著色器的其他材質(zhì),。
自定義插值器
現(xiàn)在我們已經(jīng)熟悉了項目和一些著色器資源,,接下來將向大家展示著色器圖形的一個全新功能自定義插值器。
通過使用自定義插值器,,我們能夠?qū)⑿畔捻旤c階段傳遞到碎片階段,,以獲得更好的著色器性能。
我們可以用一個簡單的噪聲節(jié)點平鋪和偏移UVs來舉例,,以獲得一些泡沫紋理的扭曲效果,。泡沫紋理本身利用RGB通道存儲不同密度的泡沫紋理。為了獲得更真實的結果,,不同的通道會向相反的方向扭曲,。為了使泡沫不那么僵硬,我們使用波浪的法線貼圖作為遮罩,,這樣泡沫就可以自然地融入波浪,。泡沫的計算在頂點階段進行并將信息傳遞到碎片階段,能夠大幅提升著色器性能,。
下面再讓我們看看著色器中法線貼圖平鋪的功能,。
為了獲得更好的波浪效果,原始著色器將兩個法線貼圖平鋪在不同的方向上,并且計算都是以每像素為單位的方式進行的,。在這里,,有了自定義插值器的支持,我們現(xiàn)在可以將UVs平鋪部分移動到頂點階段,。
為了看到使用自定義插值器帶來的性能提升,,我們構建了兩個版本,兩個版本只交換了水著色器,。一個水著色器使用自定義插值器,,另一個沒有。我們通過使用PIX從每個構建中捕獲每一幀,,來分析GPU上的渲染成本,。通過下圖我們可以明顯的看到在使用自定義插值器的著色器中,水著色器的繪制調(diào)用持續(xù)時間顯著減少了33%,。
使用自定義插值器時,,需要注意的一點是,在片段階段執(zhí)行的操作要比在頂點階段執(zhí)行的更加頻繁,。在某些情況下,將計算移動到頂點階段可能會導致視覺效果中微小細節(jié)的丟失,。自定義插值器功能最多支持32個通道,。且不同平臺和GPU有不同的插值器變量限制。
Blackboard分類
隨著著色器變得越來越復雜,,許多屬性可能很難在Blackboard上進行導航?,F(xiàn)在,我們能夠使用新的Blackboard分類創(chuàng)建自定義屬性組,,并在材質(zhì)檢查器中將它們顯示為可擴展的部分,。
我將繼續(xù)使用水著色器作為示例。在著色器圖形的Blackboard中,,我們將所有法線貼圖屬性分組到一個名為“波法線”的類別中,。然后,當我門在場景中工作并想要在材質(zhì)檢查器中調(diào)整屬性值時,,我可以輕松導航到該組,。我也可以折疊它來節(jié)省檢查器中的空間。
我們在這篇文章中談到的所有功能現(xiàn)在都可以在Unity 2021.2的全新Shader Graph包中獲得,。
電話:010-50951355 傳真:010-50951352 郵箱:[email protected] ,;點擊查看區(qū)域負責人電話
手機:13811546370 / 13720091697 / 13720096040 / 13811548270 /
13811981522 / 18600440988 /13810279720 /13581546145