SubShader

作者:追风剑情 发布于:2014-5-18 10:35 分类:Shader

Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个物体时,它找到使用的着色器,并提取第一个能运行在当前用户的显卡上的子着色器。Subshader的语法为:

Subshader { [Tags] [CommonState] Pass{ } }

  • 子着色器由可选标签(Tags)、通用状态(CommonState)和一个通道(Pass)列表构成。
  • 子着色器定义了一个渲染通道的列表,并可选是否为所有通道初始化所需要的通用状态。
  • 当Unity选择用于渲染的子着色器时,它为每一个通道渲染一次对象(可能会更多,这取决于光线的交互情况)。对象的每一次渲染都会占用一定资源,Unity会选择使用最小数目的通道来定义着色器。有时在一些显卡上需要的效果不能通过单次通道来完成,就必须使用多次通道。
  • 定义通道的类型有regular Pass、 Use Pass和Grab Pass
  • 在通道中定义的状态同时对整个子着色器块可见,这将使得所有通道共享状态。

下面的代码片段是一个简单的子着色器:

SubShader {
   Tags { "Queue" = "Transparent" } //渲染队列为透明队列
    Pass {
      Lighting Off   //关闭光照
       SetTexture [_MainTex] { } //设置纹理
   }
}

 

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号