ShaderLab: SubShader

ShaderLab: SubShader

每個shader在Unity中都包含了一系列subshaders。當Unity要顯示一個mesh,他將找shader來使用,並選擇第一個可以在用戶顯卡上運行的subshader。

Syntax

Subshader { [Tags] [CommonState] Passdef [Passdef ...] }

定義subshade包含可選的tags,common state和Pass定義列表

Details

一個subshader定義一系列rendering passes 並且選項中設置的任何狀態對於所有Pass都是相同的。此外, subshader的Tags 可以被設置.

當Unity選擇一個subshader來渲染,它定義的每個Pass都會渲染物體一次(可能更多是由於光的影響)。 因爲對象的每個渲染都是一個昂貴的操作,所以你希望在shader中定義儘可能少的Pass。當然,在有時在某些顯卡上,需要的效果可能不能通過一個Pass實現,那麼你就需要定義多個Pass。
每個定義的Pass可以是 一個 regular Pass, 一個 Use Pass 或 一個 Grab Pass.

任何在Pass定義中允許的聲明,都可以出現先Subshader代碼塊中。這樣所有的Pass都會使用這個“共享”的狀態。

Example

// ...
SubShader {
    Pass {
        Lighting Off
        SetTexture [_MainTex] {}
    }
}
// ...

這個subshader定義了一個Pass,關閉了光照只是用一個名爲_MainTex的紋理顯示mesh。


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