詳解Unity中的ShaderGraph入門使用教程
一,ShaderGraph 簡介
簡介:
Unity2018版本之后推出了一個(gè)可編程渲染管線工具ShaderGraph,讓我們可以通過可視化界面拖拽來實(shí)現(xiàn)著色器的創(chuàng)建和編輯。
官方話術(shù):
Shader Graph 使您能夠直觀地構(gòu)建著色器。您無需編寫代碼,而是在圖形框架中創(chuàng)建和連接節(jié)點(diǎn)。Shader Graph 提供反映您的更改的即時(shí)反饋,并且對(duì)于不熟悉著色器創(chuàng)建的用戶來說非常簡單。
Shader Graph 僅與可編寫腳本的渲染管線 (SRP) 兼容,即高清晰度渲染管線 (HDRP) 和通用渲染管線 (URP)。這兩個(gè) SRP 在 Unity 2018.1 及更高版本中可用。傳統(tǒng)的內(nèi)置渲染管線不支持 Shader Graph。
Shader Graph是基于可編程流水線, 一種通過節(jié)點(diǎn)圖的方式,來實(shí)現(xiàn)可視化的Shader的編程。
有了它之后我們就不用再編寫大量的代碼了,不用考慮語法和錯(cuò)誤調(diào)試了。
使用版本:推薦使用Unity2019.1以上的版本。
二,ShaderGraph 導(dǎo)入
2.1 現(xiàn)有工程導(dǎo)入
點(diǎn)擊”Windows“ --> ”Package Manager“ --> “Shader Graph” --> ”Install“ ,點(diǎn)擊后等待導(dǎo)入完成即可:
同理在點(diǎn)擊Package Manager面板找到 --> “Lightweight RP” 然后點(diǎn)擊”Install“導(dǎo)入等待導(dǎo)入完成即可:
2.2 導(dǎo)入指定版本
使用2.1的方式添加,只能導(dǎo)入最新版本的插件,使用下面這個(gè)方式可導(dǎo)入一個(gè)指定版本:
打開工程目錄,找到“Package Manager” 文件夾下的“manifest.json”文件,打開后添加:(注意要指定正確版本)
"com.unity.render-pipelines.lightweight": "7.5.3",
"com.unity.shadergraph": "7.5.3",
2.3 新工程導(dǎo)入
選擇LWRP或者HDRP的話,會(huì)自動(dòng)附帶相關(guān)插件,并且Unity已經(jīng)幫我們進(jìn)行了工程基礎(chǔ)配置,下面我們要說的工程基礎(chǔ)配置:
三,ShaderGraph 配置
若你是以上面2.3新工程的形式創(chuàng)建的工程,則不需要進(jìn)行下述配置
3.1 基本設(shè)置
通過菜單"Asset" --> “Create” --> “Rendering” --> “Universal Render Popeline” --> “Pipeline Asset(Forward Renderer)” 創(chuàng)建URP渲染管線配置
在2019.3版本之后,Unity將輕量渲染管線LWRP重命名為通用渲染管線URP。 所以雖然我們上面導(dǎo)入的是“Lightweight RP”包,但是這邊創(chuàng)建的時(shí)候顯示的是“Universal Render Pipeline”:
設(shè)置URP渲染管線配置到“Edit” --> “Project Setting” --> “Graphics” --> “Scriptable Render Pipeline Settings” 如下圖所示:
3.2 創(chuàng)建ShaderGraph示例
在“Project”面板右鍵 --> “Create” --> “Shader” --> “Unlit Graph”; 這時(shí)我們可以看到Shader面板上多了幾個(gè)后綴為Graph的選項(xiàng):
選擇我們創(chuàng)建一個(gè)“Unlit Graph”看下效果:
“雙擊” 就可打開我們創(chuàng)建“Unlit Shader Graph”的可編輯面板:
四,ShaderGraph 面板
4.1 可編輯面板介紹
為了方便操作,此編輯面板支持多開,支持直接從其他面板上復(fù)制節(jié)點(diǎn)
主節(jié)點(diǎn):決定著色器輸出的最終連接:(所有節(jié)點(diǎn)經(jīng)過計(jì)算后都必須連接到主節(jié)點(diǎn)上,才會(huì)得到應(yīng)用)
預(yù)覽界面:在這里“右鍵”,可隨意旋轉(zhuǎn),縮放,以及替換網(wǎng)格:
黑板:在單個(gè)收集視圖中包含所有著色器屬性的區(qū)域。使用Blackboard 添加,刪除,重命名和排序:(創(chuàng)建屬性,然后拖拽到主編輯空白處,形成在材質(zhì)球上可編輯公開屬性)
創(chuàng)建節(jié)點(diǎn):空白處“右鍵” --> “Create Node” --> 選擇要?jiǎng)?chuàng)建的節(jié)點(diǎn):(可選擇,可搜索找到要用的節(jié)點(diǎn),子節(jié)點(diǎn)非常多,使用過程中慢慢累積)
編輯節(jié)點(diǎn):創(chuàng)建了一個(gè)“Color” 節(jié)點(diǎn),在節(jié)點(diǎn)上右鍵,可以看到復(fù)制,刪除等操作信息
連接節(jié)點(diǎn):單擊節(jié)點(diǎn)右側(cè)“Out”輸出,拖拽到對(duì)應(yīng)的輸入上:
五,ShaderGraph 使用
5.1 創(chuàng)建UnlitGraph并創(chuàng)建貼圖節(jié)點(diǎn)
在“Project”面板右鍵 --> “Create” --> “Shader” --> “Unlit Graph”; 詳細(xì)圖解創(chuàng)建步驟見上文3.2。
雙擊創(chuàng)建好的"Unlit Graph",打開編輯界面,空白處“右鍵” 選擇 --> “Create Node” —-> 搜索框搜索“Texture” 點(diǎn)擊創(chuàng)建“Sample Texture 2D”:
5.2 給貼圖節(jié)點(diǎn)賦值并連接到主節(jié)點(diǎn)
將Texture節(jié)點(diǎn)的輸出,拖拽到主節(jié)點(diǎn)的輸入:
給Texture進(jìn)行賦值:(和其他組件使用形式一樣,點(diǎn)擊“原點(diǎn)”選擇Texture)
5.3 保存并使用ShaderGraph
點(diǎn)擊面板左上角的“Save Asset”,進(jìn)行保存
然后創(chuàng)建材質(zhì)球,將其Shader 指定為剛剛保存的“UnlitShaderGraph”:(可直接拖拽賦值)
最后在場景中創(chuàng)建一個(gè)Cube,并將其材質(zhì)球指定為剛創(chuàng)建的:(也可直接拖拽賦值)
這樣就完成了一個(gè)Shader的從創(chuàng)建到應(yīng)用整個(gè)流程啦~
5.4 公開屬性使其在材質(zhì)球上編輯
細(xì)心的你可能已經(jīng)發(fā)現(xiàn)了,在上圖材質(zhì)球使用的貼圖位置是不能進(jìn)行修改的:
下面我們就將貼圖屬性公開為外部可修改的。
在“Blackboard”面板點(diǎn)擊“+”號(hào),添加"Texture 2D"屬性,然后將其拖拽到空白編輯區(qū)域,最后將其輸出節(jié)點(diǎn)連接到貼圖輸入節(jié)點(diǎn)上:
然后點(diǎn)擊下右上角的“Save Asset”保存一下,再次點(diǎn)擊到材質(zhì)球上,就可以看到貼圖位置是空的,并且是可修改的了:
六,ShaderGraph 總結(jié)
本文對(duì)ShaderGraph進(jìn)行了簡單介紹,使用時(shí)需要的工程配置,以及ShaderGraph的編輯面板操作,最后通過一個(gè)簡單示例進(jìn)行整體流程的梳理。
使用ShaderGraph前提條件:
導(dǎo)入ShaderGraph插件導(dǎo)入U(xiǎn)RP(通用渲染管線)或者HDRP(高清渲染管線)創(chuàng)建Pipeline Assets并配置到Graphics面板
完成上述準(zhǔn)備工作,就可以愉快的使用ShaderGraph了。
到此這篇關(guān)于Unity 之 ShaderGraph入門使用詳解的文章就介紹到這了,更多相關(guān)Unity ShaderGraph使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中動(dòng)態(tài)數(shù)組用法實(shí)例
這篇文章主要介紹了C#中動(dòng)態(tài)數(shù)組用法,實(shí)例分析了C#中ArrayList實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04C#使用winform實(shí)現(xiàn)進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了C#使用winform實(shí)現(xiàn)進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07探討:關(guān)閉瀏覽器后,php腳本會(huì)不會(huì)繼續(xù)運(yùn)行
本篇文章是對(duì)關(guān)閉瀏覽器后,php腳本會(huì)不會(huì)繼續(xù)運(yùn)行進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06unity shader實(shí)現(xiàn)玻璃折射效果
這篇文章主要為大家詳細(xì)介紹了unity shader實(shí)現(xiàn)玻璃折射效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04C#實(shí)現(xiàn)根據(jù)銀行卡卡號(hào)判斷銀行名
這篇文章主要介紹了C#實(shí)現(xiàn)根據(jù)銀行卡卡號(hào)判斷銀行名,是從其他網(wǎng)友的java程序改編而來,有需要的小伙伴可以參考下。2015-07-07c# RSA非對(duì)稱加解密及XML&PEM格式互換方案
這篇文章主要介紹了c# RSA非對(duì)稱加解密及XML&PEM格式互換方案,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-12-12