您的位置:首页 > 移动开发 > Unity3D

Unity3d Shader(二) SubShader

2014-01-07 09:16 134 查看
Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器。

 

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

SubShader {

    Pass {

        Lighting Off

        SetTexture [_MainTex] {}

    }

}

这个着色器定义了一个单一的通道用来关闭任何光照,并只使用一个名叫_MainTex的纹理来显示网格。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: