ShaderLab:通道標簽
通道使用標簽來告知它們期望何時以何種方式被渲染到渲染引擎。
語法
指定?TagName1?具有?Value1,TagName2?具有?Value2??筛鶕?jù)需要添加任意數(shù)量的標簽。
詳細信息
從根本上說,標簽就是鍵/值對。在通道中,標簽用于控制此通道在光照管線(環(huán)境光、頂點光照、像素光照等等)中具有哪個角色以及某些其他選項。請注意,以下由 Unity 識別的標簽_必須_位于 Pass 部分中,不能在 SubShader 中!
LightMode 標簽
LightMode?標簽定義通道在光照管線中的角色。請參閱渲染管線以了解詳細信息。很少手動使用這些標簽;大部分情況下,需要與光照進行交互的著色器都先編寫為表面著色器,然后再處理這些細節(jié)。
LightMode 標簽的可能值:
Always:始終渲染;不應用光照。
ForwardBase:在前向渲染中使用;應用環(huán)境光、主方向光、頂點/SH 光源和光照貼圖。
ForwardAdd:在前向渲染中使用;應用附加的每像素光源(每個光源有一個通道)。
Deferred:在延遲渲染中使用;渲染 G 緩沖區(qū)。
ShadowCaster:將對象深度渲染到陰影貼圖或深度紋理中。
MotionVectors:用于計算每對象運動矢量。
PrepassBase:在舊版延遲光照中使用;渲染法線和鏡面反射指數(shù)。
PrepassFinal:在舊版延遲光照中使用;通過組合紋理、光照和反光來渲染最終顏色。
Vertex:當對象不進行光照貼圖時在舊版頂點光照渲染中使用;應用所有頂點光源。
VertexLMRGBM:當對象不進行光照貼圖時在舊版頂點光照渲染中使用;在光照貼圖為 RGBM 編碼的平臺上(PC 和游戲主機)。
VertexLM:當對象不進行光照貼圖時在舊版頂點光照渲染中使用;在光照貼圖為雙 LDR 編碼的平臺上(移動平臺)。
PassFlags 標簽
一個通道可指示一些標志來更改渲染管線向通道傳遞數(shù)據(jù)的方式。這可通過使用?PassFlags?標簽來實現(xiàn),該標簽的值為空格分隔的標志名稱。目前支持以下標志:
OnlyDirectional:在 ForwardBase 通道類型中使用時,此標志的作用是僅允許主方向光和環(huán)境光/光照探針數(shù)據(jù)傳遞到著色器。這意味著非重要光源的數(shù)據(jù)將不會傳遞到頂點光源或球諧函數(shù)著色器變量。請參閱前向渲染以了解詳細信息。
RequireOptions 標簽
一個通道可指示僅當滿足某些外部條件時才渲染該通道。這可通過使用?RequireOptions?標簽來實現(xiàn),該標簽的值為空格分隔的選項字符串。目前,Unity 支持以下選項:
SoftVegetation:僅當?Quality?窗口中開啟了 Soft Vegetation 時才渲染此通道。
另請參閱
也可為子著色器提供標簽,請參閱子著色器標簽。