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。


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