SubShader内部可以有标签(Tags)的定义。Tags指定了这个SubShader的渲染顺序(时机),以及其他的一些设置。
1、"Queue"标签 :定义渲染顺序,预制值为 :
(1)、Background :值为1000,多用于天空盒
(2)、Geometry :值为2000,大部分物体都处于这个队列中,不透明的物体也处于这个队列中,这个队列内部的物体的渲染顺序会作进一步的优化(从近到远early-z test可以剔除不需经过FS处理的片元)。其它队列中的物体都是按照空间位置的从远到近进行渲染的
(3)、AlphaTest :值为2450,已进行AlphaTest的物体处于这个队列中
(4)、Transparent :值为3000,透明物体
(5)、Overlay :值为4000,镜头光晕
(6)、用户可以自定义值 :例如 :"Queue" = "Background + 100"
2、"RenderType"标签 :Unity可以运行时替换符合特定RenderType的所有Shader
Unity内建的RenderType包括 :
(1)、Opaque :绝大部分不透明的物体使用的都是这个标签
(2)、Transparent :绝大多数透明的物体使用的都是这个,包括粒子特效
(3)、Background :天空盒
(4)、Overlay :GUI、镜头光晕使用
(5)、可以自定义RenderType,可以参考Rendering with Replaced Shaders
3、ForceNoShadowCasting :值为"true",表示不接收阴影
4、IgnoreProjector :值为"true",表示不接收Projector组件的投影
Pass中的Tags :
最重要的Tag是"LightMode",指定Pass和Unity的某一种渲染路径(Rendering Path)搭配使用
(1)、ForwardBase :可支持顶点光照
(2)、ForwardAdd :
(3)、Always :永远都渲染,不处理光照
(4)、ShadowCaster :渲染产生阴影的物体
(5)、ShadowCollector :收集物体阴影到屏幕坐标buffer里