Syntax 语法
Subshader { [Tags] [CommonState] Passdef [Passdef …] }
通过可选标签,通用状态 和 一个Pass 定义的列表构成了子着色器。
Details 细节
- 子着色器定义了一个渲染通道的列表,并可选是否为所有通道初始化所需要的通用状态。
- 当Unity选择用于渲染的子着色器时,它为每一个被定义的通道渲染一次对象(可能会更多,这取决于光线的交互作用)。当对象的每一次渲染都是一次昂贵的操作时,你能选择使用最小数目的通道来定义着色器。当然,有时在一些显示硬件上需要的效果不能通过单次通道来完成。除了使用多次通道你别无选择。
- 通道定义的类型包括a regular Pass, a Use Pass or a Grab Pass。
- 任何出现在通道定义的状态同时也能整个子着色器块中可见。这将使得所有通道共享状态。
Example
// ...
SubShader {
Pass {
Lighting Off
SetTexture [_MainTex] {}
}
}
// ...
这个着色器定义了一个单一的通道用来关闭任何光照,并只使用一个名叫_MainTex的纹理来显示网格。