Unity-內(nèi)置著色器 include 文件
Unity 提供了若干文件供著色器程序用于引入預(yù)定義的變量和 helper 函數(shù)。這可以通過(guò)標(biāo)準(zhǔn)?#include
?指令來(lái)完成,例如:
Unity 中的著色器 include 文件采用?.cginc
?擴(kuò)展名,內(nèi)置的著色器 include 文件包括:
HLSLSupport.cginc
?-_(自動(dòng)包含)_用于跨平臺(tái)著色器編譯的 helper 宏和定義。UnityShaderVariables.cginc
?-_(自動(dòng)包含)_常用的全局變量。UnityCG.cginc
?- 常用的?helper 函數(shù)。AutoLight.cginc
?- 光照和陰影功能,例如表面著色器在內(nèi)部使用此文件。Lighting.cginc
?- 標(biāo)準(zhǔn)表面著色器光照模型;當(dāng)您編寫表面著色器時(shí)會(huì)自動(dòng)包含。TerrainEngine.cginc
?- 地形和植被著色器的 helper 函數(shù)。
如果您要查看任何 helper 代碼具體執(zhí)行的操作,可在 Unity 應(yīng)用程序中找到這些文件(Windows 上位于?{unity 安裝路徑}/Data/CGIncludes/UnityCG.cginc__,Mac 上位于?/Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc__)。
HLSLSupport.cginc
編譯 CGPROGRAM 著色器時(shí)會(huì)自動(dòng)包含此文件(但不會(huì)對(duì) HLSLPROGRAM 著色器包含此文件)。此文件聲明各種預(yù)處理器宏以幫助進(jìn)行多平臺(tái)著色器開(kāi)發(fā)。
UnityShaderVariables.cginc
編譯 CGPROGRAM 著色器時(shí)會(huì)自動(dòng)包含此文件(但不會(huì)對(duì) HLSLPROGRAM 著色器包含此文件)。此文件聲明著色器中常用的各種內(nèi)置全局變量。
UnityCG.cginc
Unity 著色器中通常會(huì)包含此文件。此文件聲明大量?jī)?nèi)置 helper 函數(shù)和數(shù)據(jù)結(jié)構(gòu)。
UnityCG.cginc 中的數(shù)據(jù)結(jié)構(gòu)
struct?
appdata_base
:頂點(diǎn)著色器輸入,包含位置、法線和一個(gè)紋理坐標(biāo)。struct?
appdata_tan
:頂點(diǎn)著色器輸入,包含位置、法線、切線和一個(gè)紋理坐標(biāo)。struct?
appdata_full
:頂點(diǎn)著色器輸入,包含位置、法線、切線、頂點(diǎn)顏色和兩個(gè)紋理坐標(biāo)。struct?
appdata_img
: 頂點(diǎn)著色器輸入,包含位置和一個(gè)紋理坐標(biāo)。