Unity-ShaderLab:Pass
Pass 代碼塊將使游戲?qū)ο蟮膸缀误w被渲染一次。
語法
基本的 Pass 命令包含渲染狀態(tài)設(shè)置命令的列表。
名稱和標簽
一個通道 (Pass) 可以定義一個名稱 (Name)?和任意數(shù)量的標簽 (Tags)。這些名稱/值字符串用于將通道的意圖傳達給渲染引擎。
渲染狀態(tài)設(shè)置
一個通道將設(shè)置圖形硬件的各種狀態(tài),例如是否應開啟 Alpha 混合或是否應使用深度測試。
命令如下所示:
Cull
設(shè)置多邊形剔除模式。
ZTest
設(shè)置深度緩沖區(qū)測試模式。
ZWrite
設(shè)置深度緩沖區(qū)寫入模式。
Offset
設(shè)置 Z 緩沖區(qū)深度偏移。請參閱剔除和深度頁面的文檔以了解更多詳細信息。
請參閱剔除和深度的文檔以了解有關(guān) Cull、ZTest、ZWrite 和 Offset 的更多詳細信息。
Blend
設(shè)置 Alpha 混合、Alpha 操作和 alpha-to-coverage 模式。請參閱有關(guān)混合的文檔以了解更多詳細信息。
ColorMask
設(shè)置顏色通道寫入遮罩。寫入?ColorMask 0?可關(guān)閉對所有顏色通道的渲染。默認模式是 寫入所有通道 (RGBA),但是對于某些特殊效果,您可能希望不修改某些通道,或完全禁用顏色 寫入。
使用多渲染目標 (MRT) 渲染時,可通過在末尾添加索引(0 到 7)來為每個渲染目標設(shè)置不同的顏色遮罩。例如,ColorMask RGB 3
?將使渲染目標 #3 僅寫入到 RGB 通道。
舊版固定函數(shù)著色器命令
一些命令用于編寫舊版“固定函數(shù)樣式”著色器。這是視為已棄用的功能,因為編寫表面著色器或著色器程序?可帶來更大的靈活性。但是,對于非常簡單的著色器,以固定函數(shù)樣式編寫著色器有時會更容易,因此這里提供了命令。請注意,如果不使用固定函數(shù)著色器,則會忽略以下所有命令。
固定函數(shù) Lighting 和 Material
所有這些均控制固定函數(shù)每頂點光照:它們將其開啟,設(shè)置材質(zhì)顏色,開啟鏡面高光,提供默認顏色(如果頂點光照關(guān)閉),并控制網(wǎng)格頂點顏色如何影響光照。請參閱有關(guān)材質(zhì)的文檔以了解更多詳細信息。
固定函數(shù) Fog
設(shè)置固定函數(shù) Fog 的參數(shù)。請參閱有關(guān)霧化的文檔以了解更多詳細信息。
固定函數(shù) AlphaTest
開啟固定函數(shù) Alpha 測試。請參閱有關(guān)?Alpha 測試的文檔以了解更多詳細信息。
固定函數(shù)紋理組合器
設(shè)置渲染狀態(tài)后,可使用?SetTexture?命令指定多個紋理及其組合模式:
詳細信息
著色器通過幾種方式與 Unity 的渲染管線進行交互;例如,通道可以使用?Tags?命令來表明它只應該用于延遲著色。某些通道也可以在同一個游戲?qū)ο笊蠄?zhí)行多次;例如,在前向渲染中,根據(jù)影響游戲?qū)ο蟮?光源數(shù)量,將多次執(zhí)行“ForwardAdd”通道類型。請參閱有關(guān)渲染管線的文檔以了解更多詳細信息。
另請參閱
有幾個特殊的通道可用于重復使用通用功能或?qū)崿F(xiàn)各種高端效果:
UsePass?包含來自另一個著色器的指定通道。
GrabPass?將屏幕內(nèi)容抓取到紋理中,以便在之后的通道中使用。