UnityShader學習(二)標籤和狀態,以及pass

標籤
標籤 —在每個pass裏面也可以設置標籤,但是此標籤與pass裏面的不一樣(我也不知道那兒不一樣)
標籤一般用鍵值對錶示,鍵和值都是字符串類型得
寫法:Tas{“Key”=“value” “Key”=“value” }
標籤類別:
Queue ->設置渲染順序,可以通過此標籤讓所有透明物體在不透明物體之後被渲染
數值越小越優先渲染
BackGround 1000 ->所有渲染之前,一般是背景啥的
Greometry 2000 ->默認的渲染隊列 大多物體,不透明物體使用
AlphaTest 2450 ->需要透明測試得物體
Transparent 3000 ->任何使用了透明度混合得物體應該使用此隊列
Overlay 4000 ->用於實現一些疊加效果,最後渲染

狀態
狀態 —在每個pass裏面也可以設置狀態,用法是一樣的但是放在SubShader得狀態作用於所有得pass
Cull Back |Front|Off 設置剔除模式:剔除背面/正面/關閉剔除
ZTest Less Greater | LEqual | GEqual |Equal | NotEqual |Always 設置深度測試時使用得函數
ZWrite On |Off 開啓或者關閉深度寫入
Blane SrcFactor DstFactor 開啓並設置混合模式

Pass板塊
pass得語義一般爲:
Pass{
[Name]
[Tags]
[RenderSetup]
//Other code
}

一般名字寫法爲:Name "MyPassName"
通過這個名字,可以使用ShaderLab的UsePass命令來直接使用一個UnityShder的Pss,如:

UsePass "MyShader/MYPASSNAME"

需要注意pass內部會把名字默認改爲全部大寫 ,所以使用的時候也要大寫

pass自己的標籤:
LightMode:定義該pass在unity的渲染流水線中的角色
RequireOptions:用於指定當滿足條件時渲染該pass

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章